【发布时间】:2019-01-14 07:33:36
【问题描述】:
我需要比较两个数据表,删除重复的,然后填充一个gridview。
这是我迄今为止尝试过的
DataTable cols = new DataTable();
DataTable cols2 = new DataTable();
DataTable cols3 = cols.Copy();
foreach(DataRow row1 in cols2.Rows)
{
bool isRecordExist = false;
foreach(DataRow row2 in cols.Rows)
{
if (row1 == row2)
{
isRecordExist = true;
}
if (!isRecordExist)
{
cols3.ImportRow(row1);
}
}
}
dgvfcolumns.DataSource = cols3;
但它只是将第二个数据表(cols2)中的行添加到第一个(cols)中,而不是删除重复项。
有什么想法吗? 我还想问我是否必须将我的数据表转换为数组? 谢谢
编辑 我用这样的组合填充我的第一个数据表...... Obtaining combinations of k elements from n in C#
第二个数据表有一个表中的值,我用一个选择填充它
SqlDataAdapter sqlDa = new SqlDataAdapter("select concat(N1, ' ', N2, ' ',N3, ' ',N4, ' ',N5) FROM Cols2", sqlCon);
【问题讨论】:
-
您正在比较两个 DataRow 对象,而不是两个 DataRow 对象中的 值。
-
row1 == row2正在检查row1和row2是否引用同一个对象。但我怀疑您想检查两个DataRow实例中包含的值是否相同:您需要自己检查列。 -
更确切地说是“查找两个表的交集”部分
var contacts = contacts1.AsEnumerable().Intersect(contacts2.AsEnumerable(), DataRowComparer.Default); -
@xdtTransform 我已经尝试过了,但它不起作用...可能是因为我的数据顺序不同...谢谢
标签: c# linq duplicates