我有两个数据表,它们具有相同的架构(相同的列名和类型)。我想获取出现在第一个数据表中的行,而不是出现在第二个数据表中的行。有人能帮我吗?谢谢。
bvpmtnay1#
谢天谢地,MS创建了extension methods for DataTable,允许您使用Linq方法(如Except)查询数据行,并编写了class that implements IEqualityComparer<DataRow>,通过列值比较DataRow示例:
DataTable
Linq
Except
IEqualityComparer<DataRow>
DataRow
var rows = dt1.AsEnumerable() .Except(dt2.AsEnumerable(),DataRowComparer.Default);
sz81bmfz2#
我会这样写:
var onlyIn1 = dataTable1.Where( row1 => !dataTable2.Rows.Any( row2 => row1["CustomerKey"] == row2["CustomerKey"]) ).ToList();
cngwdvgl3#
你可以试试这个:
var onlyIn1 = db.Table1.Except(db.Table2).ToList();
我从未测试过它,但它应该像T-SQL的EXCEPT那样工作
EXCEPT
3条答案
按热度按时间bvpmtnay1#
谢天谢地,MS创建了extension methods for
DataTable
,允许您使用Linq
方法(如Except
)查询数据行,并编写了class that implementsIEqualityComparer<DataRow>
,通过列值比较DataRow
示例:sz81bmfz2#
我会这样写:
cngwdvgl3#
你可以试试这个:
我从未测试过它,但它应该像T-SQL的
EXCEPT
那样工作