从列表中获取唯一的项目

发布于 2024-08-03 20:44:33 字数 108 浏览 3 评论 0原文

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

我有一个 List ,其中可能有多个重复项目,并且只需要列表中的唯一值。

What is the fastest / most efficient way of getting all the distinct items from a list?

I have a List<string> that possibly has multiple repeating items in it and only want the unique values within the list.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

时光暖心i 2024-08-10 20:44:33

您可以使用 Distinct< /a> 方法返回不同项目的 IEnumerable

var uniqueItems = yourList.Distinct();

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

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

You can use the Distinct method to return an IEnumerable<T> of distinct items:

var uniqueItems = yourList.Distinct();

And if you need the sequence of unique items returned as a List<T>, you can add a call to ToList:

var uniqueItemsList = yourList.Distinct().ToList();
如果没结果 2024-08-10 20:44:33

使用 HashSet。例如:

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

Use a HashSet<T>. For example:

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);

prints

A
B
D
C
貪欢 2024-08-10 20:44:33

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

You can use Distinct extension method from LINQ

马蹄踏│碎落叶 2024-08-10 20:44:33

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

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

Apart from the Distinct extension method of LINQ, you could use a HashSet<T> object that you initialise with your collection. This is most likely more efficient than the LINQ way, since it uses hash codes (GetHashCode) rather than an IEqualityComparer).

In fact, if it's appropiate for your situation, I would just use a HashSet for storing the items in the first place.

风追烟花雨 2024-08-10 20:44:33

在 .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;
}

In .Net 2.0 I`m pretty sure about this solution:

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文