Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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中的两个数据表_Vb.net_Linq_Datatable - Fatal编程技术网

比较vb.net中的两个数据表

比较vb.net中的两个数据表,vb.net,linq,datatable,Vb.net,Linq,Datatable,DataTable One仅包含一列(代码) 第二个Datatable也只包含一列(ProductCode) 我想使用最佳技术比较第一个数据表的所有值是否都存在于第二个数据表中。目前我使用的每一次,但一次是假的,第二次是真的,所以它看起来不实用 Applicable = False For Each chkRow As DataRow In chk.Rows For Each dtRow As DataRow In dt.Rows If chkRow("Product

DataTable One仅包含一列(代码)

第二个Datatable也只包含一列(ProductCode)

我想使用最佳技术比较第一个数据表的所有值是否都存在于第二个数据表中。目前我使用的每一次,但一次是假的,第二次是真的,所以它看起来不实用

Applicable = False
For Each chkRow As DataRow In chk.Rows
   For Each dtRow As DataRow In dt.Rows
      If chkRow("ProductCode") = dtRow("Code") Then
         Applicable = True
         Exit For
       Else
         Applicable = False
       End If
    Next
Next

请建议更好的解决方案。

我倾向于使用LINQ查询:

Dim code=table1.AsEnumerable()。
选择(函数(行)行。字段(整数)(“代码”))
Dim productCodes=表2.AsEnumerable()。
选择(函数(行)行。字段(整数)(“产品代码”))。
ToArray()
如果codes.All(函数(代码)productCodes.Contains(代码)),则
'...
如果结束

请注意,存在对productCodes的ToArray调用,而不是对codes的调用。这是因为productCodes需要多次枚举,而您不希望在延迟查询中执行此操作。

@abdullah,声明它。@abdullah,看来我最初对Lambda参数使用了错误的名称,但@Jimi已为我们编辑了此名称。这就是我直接在答案中输入代码而不是在IDE中,然后复制/粘贴得到的结果。我还在
If
语句中添加了一个缺少的右括号。您的问题已回滚到原始版本,其中有答案。这样一个激烈的编辑改变了原来的问题,你应该考虑创造一个新的问题。
ProductCode
2
3
6
7
Applicable = False
For Each chkRow As DataRow In chk.Rows
   For Each dtRow As DataRow In dt.Rows
      If chkRow("ProductCode") = dtRow("Code") Then
         Applicable = True
         Exit For
       Else
         Applicable = False
       End If
    Next
Next