首页 文章

从列表中获取唯一项[重复]

提问于
浏览
84

这个问题在这里已有答案:

从列表中获取所有不同项目的最快/最有效方法是什么?

我有一个 List<string> ,可能有多个重复项,只需要列表中的唯一值 .

5 回答

  • 6

    使用HashSet<T> . 例如:

    var items = "A B A D A C".Split(' ');
    var unique_items = new HashSet<string>(items);
    foreach (string s in unique_items)
        Console.WriteLine(s);
    

    版画

    A
    B
    D
    C
    
  • 134

    您可以使用Distinct方法返回 IEnumerable<T> 个不同的项目:

    var uniqueItems = yourList.Distinct();
    

    如果您需要以 List<T> 形式返回的唯一项目序列,则可以添加对ToList的调用:

    var uniqueItemsList = yourList.Distinct().ToList();
    
  • 4

    您可以使用LINQ的Distinct扩展方法

  • 6

    在.Net 2.0中我非常肯定这个解决方案:

    public IEnumerable<T> Distinct<T>(IEnumerable<T> source)
    {
         List<T> uniques = new List<T>();
         foreach (T item in source)
         {
             if (!uniques.Contains(item)) uniques.Add(item);
         }
         return uniques;
    }
    
  • 123

    除了LINQ的 Distinct 扩展方法之外,您还可以使用初始化集合的HashSet<T>对象 . 这很可能比LINQ方式更有效,因为它使用哈希码( GetHashCode )而不是 IEqualityComparer ) .

    事实上,如果它适合您的情况,我会首先使用 HashSet 存储项目 .

相关问题