查询以找出两个DataTable中的重复行?

时间:2012-10-25 06:20:38

标签: c# asp.net sql-server datatable match

我有一张带有列的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 { }

2 个答案:

答案 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);