我决定用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”。如何修复转换错误?谢谢!
答案 0 :(得分:1)
Where
子句中指定的条件必须评估为Booelan
。在您的情况下,您的条件是一个返回行列表的查询,而不是Boolean
。您关心的是该列表是否包含任何项目,这是Any
方法的用途:
Where (From BDT2 In BDT1 Where BDT2(2).Contains(ADT2(3))).Any()