其中一个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()
答案 0 :(得分:2)
编辑:LINQ to Objects也是如此 我不知道LINQ to SQL。
方法2更快,因为GroupJoin
在内部构建了哈希表。
方法1为O(n2)
,因为它需要搜索每个类别的所有MasItems
。
答案 1 :(得分:2)
生成的SQL对于两个查询都是相同的,因此在LINQ to SQL中,它实际上是个人偏好。