我有一个自定义类型列表,如果找到重复项,我想在其中删除重复项和原始类型。只能是一个可能的重复项。
我可以覆盖 Equals 和 GetHashCode 然后使用 Distinct 但这只会删除重复项。我需要删除原始和重复...任何关于优雅的想法,所以我不必使用锤子。
我有一个自定义类型列表,如果找到重复项,我想在其中删除重复项和原始类型。只能是一个可能的重复项。
我可以覆盖 Equals 和 GetHashCode 然后使用 Distinct 但这只会删除重复项。我需要删除原始和重复...任何关于优雅的想法,所以我不必使用锤子。
您可以使用GroupBy
, 后跟Where (g => g.Count() == 1)
过滤掉所有重复的记录:
var res = orig.GroupBy(x => x).Where(g => g.Count() == 1).Select(g => g.Key);
为了使它起作用,您仍然需要覆盖GetHashCode
and Equals
。
var itemsExistingExactlyOnce = list.GroupBy(x => x)
.Where(group => group.Count() == 1)
.Select(group => group.Key);