如何在C#中比较两个数据表并获取其他数据表中的公共记录
本文关键字:数据表 获取 记录 其他 两个 比较 | 更新日期: 2023-09-27 18:23:50
我有两个DataTable
,每个Table
中有两列。现在,我想比较这两个DataTable
和C#中第三个DataTable
中的匹配行。
例如:
DataTableA
ColA1 ColA2
1 sampletext1
2 sampletext2
4 sampletext4
DataTableB
ColB1 ColB2
1 sampletext1
2 sampletext2
3 sampletext3
DataTableC
ColC1 ColC2
1 sampletext1
2 sampletext2
我试过用for loop,但速度变慢了。任何其他选择。
不确定您的匹配条件到底是什么。下面可能会有所帮助。
请参阅此
public static DataTable CompareTwoDataTable(DataTable dt1, DataTable dt2)
{
dt1.Merge(dt2);
DataTable d3 = dt2.GetChanges();
return d3;
}
如下使用。它将更快地工作
var matched = from table1 in dt1.AsEnumerable()
join table2 in dt2.AsEnumerable() on table1.Field<string>("sno") equals table2.Field<string>("sno")
where table1.Field<string>("name") == table2.Field<string>("name")
select table1;
if (matched.Count()>0)
{
DataTable dtt = matched.CopyToDataTable();
}
如果有帮助的话,别忘了提到答案。
for(i=0;i<dt1.rows.count;i++)
{
if (dt2.rows.count > i)
{
if((dt1.rows[i][1] == dt2.rows[i][1]) && (dt1.rows[i][2] == dt2.rows[i][2]))
{
dt3.rows.add(dt.rows[i])
}
}
}
首先使用merge函数合并两个数据表,最后在数据表上循环并通过select函数查找结果:
dt1 = dt.Copy();
dt1.Merge(dt2);
//Here match condition third Data table
for(int i=0; i <=dt1.rows; i++)
{
DataRow[] foundRows = dt3.Select("page_name='" + dt1.[i]['colname'] + "'");
//function or code here;
}