通过Linq比较两个数据表

嗨,我想通过Linq比较两个数据表。 但是我得到了这个例外:

具体演员表无效

请帮我,因为我是Linq的新手。 这是我正在使用的代码:

 var matched1 = from table1 in dtAvailableStores.AsEnumerable() join table2 in dtControlStores.AsEnumerable() on table1.Field("STORE_NBR") equals table2.Field("STORE_NBR") select table1; 

这里STORE_NBR是一个字符串值。

你可以对这段代码有一个相当不错的主意:

 var qry1 = datatable1.AsEnumerable().Select(a => new { MobileNo = a["ID"].ToString() }); var qry2 = datatable2.AsEnumerable().Select(b => new { MobileNo = b["ID"].ToString() }); var exceptAB = qry1.Except(qry2); DataTable dtMisMatch = (from a in datatable1.AsEnumerable() join ab in exceptAB on a["ID"].ToString() equals ab.MobileNo select a).CopyToDataTable(); 

参考文献:

  1. 使用LINQ Query比较两个数据表
  2. 比较两个DataTables的C#差异?

如果该字段实际上不是int ,则会发生这种情况。