【问题标题】:Remove Duplicates and Original from C# List从 C# 列表中删除重复项和原始项
【发布时间】:2013-05-11 21:54:46
【问题描述】:

我有一个自定义类型列表,如果发现重复项,我想删除其中的重复项和原始类型。只能是一个可能的重复项。

我可以覆盖 Equals 和 GetHashCode,然后使用 Distinct 但这只会删除重复项。我需要删除原始的和重复的......任何关于优雅的想法,所以我不必使用锤子。

【问题讨论】:

  • 贴出相关代码
  • 您能否提供一个编码示例来说明您正在使用什么,这实际上会帮助其他人了解您正在尝试做什么

标签: c# list duplicates


【解决方案1】:

您可以使用GroupBy,后跟Where (g => g.Count() == 1) 过滤掉所有有重复的记录:

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

为了使其正常工作,您仍然需要覆盖 GetHashCodeEquals

【讨论】:

    【解决方案2】:
    var itemsExistingExactlyOnce = list.GroupBy(x => x)
        .Where(group => group.Count() == 1)
        .Select(group => group.Key);
    

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 1970-01-01
      • 2019-08-04
      • 2010-11-22
      • 2018-11-25
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多