在VB.NET中,哪种LINQ to SQL Left-Join方法最好用?

时间:2011-07-28 20:59:12

标签: .net vb.net linq linq-to-sql

其中一个VB.NET LINQ to SQL Left Join选项优于其他选项吗?

我不确定要使用哪个。

方法1:Lambda

Dim query = From A In DB.Product_Categories
            From B In DB.MasItems.Where(Function(x) CBool(x.itemkey = A.ItemKey)).DefaultIfEmpty
            Select A.Name

方法2:群组加入

Dim query = From A In DB.Product_Categories
            Group Join B In DB.MasItems On B.itemkey Equals A.ItemKey Into X = Group
            From Y In X.DefaultIfEmpty
            Select A.Name()

2 个答案:

答案 0 :(得分:2)

编辑:LINQ to Objects也是如此 我不知道LINQ to SQL。

方法2更快,因为GroupJoin在内部构建了哈希表。

方法1为O(n2),因为它需要搜索每个类别的所有MasItems

答案 1 :(得分:2)

生成的SQL对于两个查询都是相同的,因此在LINQ to SQL中,它实际上是个人偏好。