我有一张带有列的Excel工作表:
Id,Data
我在sql server数据库中有一个表:
Id,Data
我在两个不同的DataTables
中派生了两行,现在我想检测excel和数据库表中常见的行,并将重复项存储在另一个DataTable
中。
像这样:
OleDbCommand command1 = new OleDbCommand("select * from [Sheet1$]",connection);
DataTable dt2 = new DataTable();
try
{
OleDbDataAdapter da2 = new OleDbDataAdapter(command1);
da2.Fill(dt2);
}
catch { }
答案 0 :(得分:1)
尝试使用像这样的linq方式
var matched = from table1 in dt1.AsEnumerable()
join table2 in dt2.AsEnumerable() on
table1.Field<int>("ID") equals table2.Field<int>("ID")
where table1.Field<string>("Data") == table2.Field<string>("Data")
select table1;
答案 1 :(得分:0)
如果您想查找重复项,可以试试这个
var result = table1.AsEnumerable().Intersect(table2.AsEnumerable()).Select(x => x);
如果你想从联盟中删除重复项,你可以试试这个
var result = table1.AsEnumerable().Union(table2.AsEnumerable()).Select(x => x);