【发布时间】:2012-08-07 02:58:24
【问题描述】:
我正在使用 SqlDataReader 将逐行添加到数据表中,如下所示:
while (reader.Read())
{
dataTable.LoadDataRow(reader.CurrentRow(), LoadOption.PreserveChanges);
}
这可行,但我需要能够避免向数据表添加重复的行。我希望能够使用 dataTable 中的 Contains 或 Find 方法,但是我找不到将 reader.CurrentRow() 中的 object[] 转换为 DataRow 以进行比较而不将其添加到数据表的方法。
我已经研究过制作 object[]s 的哈希集,然后在最后一次将它们全部添加到数据表中的选项,但我忘记了默认对象 IEqualityComparer 仅比较引用。
有没有一种可行的方法可以做到这一点,而无需在最后删除重复项?
如果删除重复项是唯一的方法,那么最好的方法是什么?
编辑: 我将数据库中的不同行拆分为代码中的单独数据表。查询结果中的每一行是不同的,但每一行的部分不是。不幸的是,我需要完全按照我的问题来做,因为查询的结果已经不同了。
【问题讨论】:
-
为什么不让数据库来处理呢?
-
@Gorgsenegger:我正在处理一个连接多个表的查询,并处理与一个共同因素相关的每个结果块。有几行包含来自某些表的重复项,但每一行实际上是不同的。
-
使用 SQL
DISTINCT或GROUP BY保证不同的行
标签: c# datatable sqldatareader