我使用一个SqlDataReader按行添加一行到一个DataTable类似如下:如何避免增加重复的行到一个DataTable
while (reader.Read())
{
dataTable.LoadDataRow(reader.CurrentRow(), LoadOption.PreserveChanges);
}
这工作,但我需要能够避免重复添加行到数据表。我希望能够使用DataTable中的Contains或Find方法,但我无法找到一种方法将reader.CurrentRow()中的object []转换为DataRow进行比较,而无需将其添加到数据表中。
我已经研究过创建对象[] s的哈希集,然后将它们一次添加到数据表的最后,但我忘记默认对象IEqualityComparer只比较引用。
有没有一种可行的方法做到这一点,而不需要在最后删除重复?
如果删除重复项是唯一的出路,那么最好的方法是什么?
编辑: 我从数据库拆分不同的行到代码中的单独的数据表。来自查询结果的每一行都是不同,但每行的部分都不是。不幸的是,我需要完成我的问题所要求的,因为查询的结果已经不同。
为什么不让数据库照顾它呢? – Gorgsenegger 2012-08-09 19:54:44
@Gorgsenegger:我正在处理一个连接多个表的查询,并处理与公共因子相关的每个结果块。有些行包含一些表中的重复项,但每行实际上是不同的。 – Jared275 2012-08-09 19:57:44
使用SQL'DISTINCT'或'GROUP BY'来保证不同的行 – PinnyM 2012-08-09 19:58:18