.net 减去具有相同架构的两个数据表,例如减去SQL查询

fdx2calv  于 2023-03-20  发布在  .NET
关注(0)|答案(3)|浏览(151)

我有两个数据表,它们具有相同的架构(相同的列名和类型)。我想获取出现在第一个数据表中的行,而不是出现在第二个数据表中的行。有人能帮我吗?谢谢。

bvpmtnay

bvpmtnay1#

谢天谢地,MS创建了extension methods for DataTable,允许您使用Linq方法(如Except)查询数据行,并编写了class that implements IEqualityComparer<DataRow>,通过列值比较DataRow示例:

var rows = dt1.AsEnumerable()
              .Except(dt2.AsEnumerable(),DataRowComparer.Default);
sz81bmfz

sz81bmfz2#

我会这样写:

var onlyIn1 = dataTable1.Where( row1 => !dataTable2.Rows.Any( row2 => row1["CustomerKey"] == row2["CustomerKey"]) ).ToList();
cngwdvgl

cngwdvgl3#

你可以试试这个:

var onlyIn1 = db.Table1.Except(db.Table2).ToList();

我从未测试过它,但它应该像T-SQL的EXCEPT那样工作

相关问题