問題はWhere句table1.Field<string>(3) == table2.Field<string>(3)
にあります。これらの値は、0または1のいずれかです。linqはそれをbool値に変更します。 Linqは "'System.String'型の型 'System.Boolean'のオブジェクトをキャストできません。linqクエリが 'System.String'型に 'System.Boolean'型のオブジェクトをキャストできません
私は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の値を持っているものに失敗します。根本的な問題がtable1[3]
あるように助け
あなたはその条件を削除した場合、あなたは結果のレコードを持っているのですか? – Hackerman
'String.Equal()'メソッドを試してみましたか? – Media
@Hackermanはい。 0または1の値を持たない他のWhere節を追加することもできます。 –