我正在使用SqlDataReader逐行添加到数据表中,如下所示:
while (reader.Read())
{
dataTable.LoadDataRow(reader.CurrentRow(), LoadOption.PreserveChanges);
}
这有效,但 I need to be able to avoid adding duplicate rows to the dataTable . 我希望能够使用dataTable中的Contains或Find方法,但是我无法找到将reader []从reader.CurrentRow()转换为DataRow的方法,以便在不将其添加到数据表的情况下进行比较 .
我已经研究了制作对象[]的哈希集的选项,然后将它们一次性地添加到最后的数据表中,但是我忘了默认对象IEqualityComparer只比较引用 .
有没有一种可行的方法可以在不删除重复项的情况下执行此操作?
如果删除重复项是唯一的方法,那么最好的方法是什么?
编辑:我正在将数据库中的不同行拆分为代码中的单独数据表 . 查询结果中的每一行都是不同的,但每行的各部分不是 . 不幸的是,我需要完全按照我的问题提出要求,因为查询的结果已经不同了 .
2 回答
你没有提供大量细节,但我希望这是全面的 .
如果您需要单个列是唯一的,那么在数据表的Columns集合中,指定如下列:
如果唯一性需要跨越多行,则这是方法:
这将在您尝试提交回源数据库之前强制执行约束 .
最简单的方法是实际确保根本没有重复的行 - 如果您查询关系数据库使用
DISTINCT
- 它将只返回唯一的行 .