我想從我的DataTable
中刪除重複項,所以我使用的是DataTable.AsEnumerable().Distinct(DataRowComparer.Default)
,但它沒有做我所需要的。我認爲,因爲每個重複行都有唯一的主鍵列。DataTable.AsEnumerable()。Distinct()不起作用,因爲主鍵列
我該怎麼做我需要的?寫我自己的DataRowComparer
?我不想要 - 因爲默認值必須工作。
我想從我的DataTable
中刪除重複項,所以我使用的是DataTable.AsEnumerable().Distinct(DataRowComparer.Default)
,但它沒有做我所需要的。我認爲,因爲每個重複行都有唯一的主鍵列。DataTable.AsEnumerable()。Distinct()不起作用,因爲主鍵列
我該怎麼做我需要的?寫我自己的DataRowComparer
?我不想要 - 因爲默認值必須工作。
您可以使用MoreLINQ項目中的DistinctBy。基本上,您可以從數據行指定您感興趣的列的投影,並使用它。例如:
var rows = DataTable.AsEnumerable()
.DistinctBy(row => new { Name = row["Name"],
Age = row["Age"] });
當你說「默認必須工作」,如果你有一個正常的主鍵列基本上不會發生。具有不同主鍵值的兩行不是彼此的重複項,因爲它們在數據上有所不同。
另一種方法是將項目數據行不帶即主鍵列,然後使用正常的Distinct
方法。
也許你可以使用defaultview.rowfilter來啓動一個按唯一列分組的查詢,並且選擇MIN(或MAX)RowId作爲保留的行。
看看this問題的更多信息abour查詢。
MoreLINQ很酷。感謝指針! – 2009-11-17 06:09:10