linq查询获取无法转换类型' System.Boolean'的对象输入' System.String'

时间:2017-06-14 21:30:20

标签: c# linq

我的问题出在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值要比较的子句,它会失败。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

因此看起来根问题是getId()table1[3]System.Stringtable2[3]。所以演员表在System.Boolean失败了。

所以用适当的测试替换你的table2.Field<string>(3)

where