使用LIKE运算符检查数据表中是否存在值到另一个数据表

时间:2016-12-02 05:35:55

标签: vb.net datatable

我决定用VB.NET写这个来搞清楚我的知识。我有2个数据表,每个数据库都有不同的列数。

  

Datatable1 = 20列

     

Datatable2 = 10列

我想检查Datatable2中是否存在Datatable1中的给定值。需要使用“like”运算符,因为Datatable2中的值将包含Datatable1中的特定值。下面的示例包含较少的要演示的列。

DataTable1 - Call this ADT1
Column 1 | Column 2| Column 3
------------------------------
A        | B       | C

DataTable2 - Call this BDT1
Column 1 | Column 2
A        | 123C456

我尝试使用LINQ,但我似乎无法正确使用语法。这就是我的尝试。

Dim results = From ADT2 In ADT1
              Where (From BDT2 In BDT1 Where BDT2(2).Contains(ADT2(3))).ToString
              Select ADT2 

错误消息:从字符串“System.Data.EnumerableRowCollect”到“Boolean”类型的转换无效。

预期结果应该与Datatable1中的“C”的第3列值匹配,以及Datatable2中的第2列值“123C456”。如何修复转换错误?谢谢!

1 个答案:

答案 0 :(得分:1)

Where子句中指定的条件必须评估为Booelan。在您的情况下,您的条件是一个返回行列表的查询,而不是Boolean。您关心的是该列表是否包含任何项目,这是Any方法的用途:

Where (From BDT2 In BDT1 Where BDT2(2).Contains(ADT2(3))).Any()