我想从我的中删除重复项,DataTable
所以我正在使用DataTable.AsEnumerable().Distinct(DataRowComparer.Default)
,但它不能满足我的需要。我认为因为每个重复的行都有它唯一的主键列。
我怎样才能做我需要的?自己写DataRowComparer
?我不想要 - 因为默认值必须有效。
我想从我的中删除重复项,DataTable
所以我正在使用DataTable.AsEnumerable().Distinct(DataRowComparer.Default)
,但它不能满足我的需要。我认为因为每个重复的行都有它唯一的主键列。
我怎样才能做我需要的?自己写DataRowComparer
?我不想要 - 因为默认值必须有效。
您可以使用MoreLINQ项目中的DistinctBy 。基本上,您指定从数据行到您感兴趣的列的投影,它将使用它。例如:
var rows = DataTable.AsEnumerable()
.DistinctBy(row => new { Name = row["Name"],
Age = row["Age"] });
当你说“默认必须工作”时,如果你有一个普通的主键列,那基本上不会发生。具有不同主键值的两行彼此不重复,因为它们的数据不同。
另一种选择是投影到没有该主键列的数据行,然后使用普通Distinct
方法。
也许您可以使用 defaultview.rowfilter 启动按唯一列分组的查询,并选择 MIN(或 MAX)RowId 作为要保留的行。
查看此问题以获取有关查询的更多信息。