2013-05-16 50 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);