在VB.NET中,哪种LINQ到SQL左连接方法最适合使用?
这些VB.NET LINQ到SQL的左连接选项之一是否优于其他选项? 我不知道该用哪个 方法1:Lambda在VB.NET中,哪种LINQ到SQL左连接方法最适合使用?,.net,vb.net,linq,linq-to-sql,.net,Vb.net,Linq,Linq To Sql,这些VB.NET LINQ到SQL的左连接选项之一是否优于其他选项? 我不知道该用哪个 方法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
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()
编辑:这适用于LINQ to对象。
我不知道LinqtoSQL 方法2更快,因为
GroupJoin
在内部构建哈希表
方法1是
O(n2)
,因为它需要搜索每个类别的所有MasItems
。生成的SQL对于两个查询都是相同的,所以在LINQ to SQL中,这确实是个人偏好。您能对另一个答案发表意见吗?我不确定在这一点上哪个是正确的,因为他们contradict@hamlin:我没有意识到您在谈论LINQ to SQL。我不知道;您可以检查生成的SQL。我在linqpad中针对当前项目中的两个表运行了这两个SQL,并查看了SQL。在此之前,我假设方法1不会产生外部联接,但事实上确实如此。