我有一个自定义类型列表,我想要删除副本和原始文件,如果找到重复项。只能是一个可能重复。
我可以覆盖Equals和GetHashCode,然后使用Distinct,但这只会删除副本。我需要删除原始和重复...任何优雅的想法,所以我不必使用锤子。
答案 0 :(得分:6)
您可以使用GroupBy
,然后使用Where (g => g.Count() == 1)
过滤掉所有重复的记录:
var res = orig.GroupBy(x => x).Where(g => g.Count() == 1).Select(g => g.Key);
为了实现此目的,您仍需要覆盖GetHashCode
和Equals
。
答案 1 :(得分:3)
var itemsExistingExactlyOnce = list.GroupBy(x => x)
.Where(group => group.Count() == 1)
.Select(group => group.Key);