【发布时间】:2015-09-16 15:52:32
【问题描述】:
我正在尝试比较两个表。我想找出table1 中存在哪些行,而table2 中不存在哪些行。 oData 和 oDataiSeries 是 DataTables,并正确填充。
var testing = from table1 in oData.AsEnumerable()
join table2 in oDataiSeries.AsEnumerable() on table1.Field<string>("SLOT") equals table2.Field<string>("SLOT")
where table1.Field<string>("SLOT") != table2.Field<string>("SLOT")
select table1;
testing 在代码运行后最终为 null。但如果我要执行以下操作。
var testingtable1 = from table1 in oData.AsEnumerable()
select table1;
var testingtable2 = from table2 in oDataiSeries.AsEnumerable()
select table2;
testingtable1 和 testingtable2 将被填充。
是因为我要比较字符串吗?
在testingtable1和testingtable2中,“SLOT”列是String
部分问题: 我正在使用 VS 2015,在调试时(将鼠标悬停在应该包含结果的 DataTable 对象上),表格没有显示正确的结果。它显示了 oData 的值,而不是 oData 和 oDataiSeries 之间的比较。我不确定我是否只是误解了 VS2015 如何显示 var 表,或者这是否是一个错误。如果我将结果 DataTable 绑定到 gridview 对象,与调试器相比,它将显示不同的行。我最终使用了@D Stanley 解决方案,并进行了一些修改。
【问题讨论】:
-
您是否要进行“左连接”? (在第一个表中,但不是第二个),您想要“完全加入”吗? (两个表中的所有内容都将不匹配的值显示为 null)或 INNER JOIN(仅匹配的值)
-
Left join using LINQ的可能重复
标签: c# linq visual-studio-2015