Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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
.net 并且在VB Linq查询中,不';我好像不工作_.net_Vb.net_Linq - Fatal编程技术网

.net 并且在VB Linq查询中,不';我好像不工作

.net 并且在VB Linq查询中,不';我好像不工作,.net,vb.net,linq,.net,Vb.net,Linq,当bomid中存在MatID属性为nothing的元素时,以下查询将失败,并出现Null引用异常。 我认为“x.MatID不是什么,而且”会阻止where的x.MatID.Process部分被执行。BOMIDs系列中有几个元素,其中MatID一文不值。 有什么想法吗 From x In BOMIDs _ Group Join y As PurchasedProcess In SpecialProcesses _ On x.MatID.PurchasedProcess Equals y.Name

当bomid中存在MatID属性为nothing的元素时,以下查询将失败,并出现Null引用异常。 我认为“x.MatID不是什么,而且”会阻止where的x.MatID.Process部分被执行。BOMIDs系列中有几个元素,其中MatID一文不值。 有什么想法吗

From x In BOMIDs _
Group Join y As PurchasedProcess In SpecialProcesses _
On x.MatID.PurchasedProcess Equals y.Name _
Into G = Group _
From z In G.DefaultIfEmpty() _
Where x.MatID IsNot Nothing AndAlso _
x.MatID.Process = ProcessEnum.PurchasedProcess _
Select New With {.Item = x.Item, .Process = z}

通过浏览您的代码,这行代码似乎也是一个潜在的问题点:

On x.MatID.PurchasedProcess Equals y.Name

由于查看您的代码时,
x.MatID
可以是
无任何内容

,因此这一行可能也是一个潜在的故障点:

On x.MatID.PurchasedProcess Equals y.Name

由于
x.MatID
可以是
,因此也不存在问题。将null检查移动到连接之前,以便在连接之前有效地过滤掉所有出现的null

尝试此更新的查询:

From x In BOMIDs _
Where x.MatID IsNot Nothing _
Group Join y As PurchasedProcess In SpecialProcesses _
On x.MatID.PurchasedProcess Equals y.Name _
Into G = Group _
From z In G.DefaultIfEmpty() _
Where x.MatID.Process = ProcessEnum.PurchasedProcess _
Select New With {.Item = x.Item, .Process = z}

而且
也不是问题所在。将null检查移动到连接之前,以便在连接之前有效地过滤掉所有出现的null

尝试此更新的查询:

From x In BOMIDs _
Where x.MatID IsNot Nothing _
Group Join y As PurchasedProcess In SpecialProcesses _
On x.MatID.PurchasedProcess Equals y.Name _
Into G = Group _
From z In G.DefaultIfEmpty() _
Where x.MatID.Process = ProcessEnum.PurchasedProcess _
Select New With {.Item = x.Item, .Process = z}

很好,谢谢。我仍然习惯于Linq,我想我的脑袋被SQL卡住了。这很好用,谢谢。我仍然习惯于Linq,我想我的脑袋被SQL卡住了。