2016-12-02 26 views
0

我决定在VB.NET中编写这个函数来刷新我的知识。我有2个数据表,每个列都有不同的数量。使用LIKE运算符检查数据表是否存在从数据表到另一个数据表

Datatable1 = 20列

Datatable2 = 10列

我要检查,如果从Datatable1给定值在Datatable2存在。需要使用“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”转换到类型“布尔”无效。

预期结果应该与Datatable2中“Datatable1”的第3列值“123C456”的第2列值相匹配。如何解决转换错误?谢谢!

回答

1

Where子句中指定的条件必须评估为Booelan。在你的情况,你的条件是一个查询,返回一个行列表,这不是一个Boolean。你在乎的是该列表是否有任何项目,这是什么Any方法是:

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

感谢您的帮助!这确实消除了我收到的错误消息。我还有另一个问题。我期望我的查询返回1结果,但它没有。它评估正确吗?它返回了0个结果。 – Jayarikahs

+0

不理会最后的信息。我不得不改变我的约会条件。这一切都有效。再次感谢! – Jayarikahs

相关问题