Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB.NET中,哪种LINQ到SQL左连接方法最适合使用?_.net_Vb.net_Linq_Linq To Sql - Fatal编程技术网

在VB.NET中,哪种LINQ到SQL左连接方法最适合使用?

在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

这些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 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不会产生外部联接,但事实上确实如此。