我的问题出在Where子句table1.Field<string>(3) == table2.Field<string>(3)
中。这些值是0或1,我认为linq将其更改为bool值。 Linq得到&#34;无法投射类型&#39; System.Boolean&#39;输入&#39; System.String&#39;&#34;。
我尝试了table1[3].ToString() == table2[3].ToString()
,但它没有出现任何错误或匹配的行,我知道它应该会出现一些。
我的查询:
var match = (from table1 in dt1.AsEnumerable()
join table2 in dt2.AsEnumerable() on table1[1].ToString() equals table2[1].ToString())
where table1.Field<string>(3) == table2.Field<string>(3)
&& table1.Field<string>("ID") == table2.Field<string>("ID")
select table1).ToList();
我希望在行上添加更多where子句,但是对于那些有0或1值要比较的子句,它会失败。
感谢您的帮助
答案 0 :(得分:2)
因此看起来根问题是getId()
是table1[3]
而System.String
是table2[3]
。所以演员表在System.Boolean
失败了。
所以用适当的测试替换你的table2.Field<string>(3)
:
where