从DataTable1获取它们不在DataTable2中的行

时间:2012-07-25 02:44:30

标签: asp.net linq datatable

我有2个数据表

DataTable1
SNo
1
2
3
4

DataTable2

SNo
1
4
3

I want the result

DataTableResult

SNo
2

我可以使用for循环来完成。

但我正在尝试使用linq。

var intersection = DataTable1.AsEnumerable().Intersect(DataTable2.AsEnumerable(), DataRowComparer.Default);    

然后我发现Intersect会给你两个表都有的行。

我完全不知道要使用什么功能。

有什么想法吗?

我得到了答案。

感谢删除答案的人。

但这给了我一个开始。

答案是

var intersection = DataTable1.AsEnumerable().Except(DataTable2.AsEnumerable(), DataRowComparer.Default);

2 个答案:

答案 0 :(得分:2)

你可以尝试使用exept语句有点难以准确,因为你只是将表显示为结构,但你可以尝试这样的事情

 var qry1 = datatable1.AsEnumerable().Select(a => new { SNo.ToString() });
 var qry2 = datatable2.AsEnumerable().Select(b => new { SNo.ToString() });
 var exceptAB = qry1.Except(qry2);

答案 1 :(得分:0)

您可以使用此类查询

select SNo from DataTable1 where SNo not in (select SNo from DataTable2);