2013-05-16 71 views
5

我有一個自定義類型的列表,如果發現重複,我想刪除重複文件和原始文件。只能是一個可能的重複。從C#列表中刪除重複和原始文件

我可以忽略Equals和GetHashCode,然後使用Distinct但這隻能刪除重複。我需要刪除原始和重複...任何想法的東西優雅,所以我不必使用錘子。

+1

發佈相關代碼。 –

+1

你能否提供一個代碼示例,說明你正在使用的是什麼,這將實際上幫助其他人瞭解你正在嘗試做什麼 – MethodMan

回答

6

您可以使用GroupBy,其次是Where (g => g.Count() == 1)篩選出有重複的所有記錄:

var res = orig.GroupBy(x => x).Where(g => g.Count() == 1).Select(g => g.Key); 

爲了這個工作,你仍然需要重寫GetHashCodeEquals

+0

就像一個魅力......! –

3
var itemsExistingExactlyOnce = list.GroupBy(x => x) 
    .Where(group => group.Count() == 1) 
    .Select(group => group.Key);