从列表中获取唯一的项目
从列表中获取所有不同项目的最快/最有效的方法是什么?
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用
Distinct
< /a> 方法返回不同项目的IEnumerable
:如果您需要以
List
形式返回唯一项目的序列,您可以添加调用ToList
:You can use the
Distinct
method to return anIEnumerable<T>
of distinct items:And if you need the sequence of unique items returned as a
List<T>
, you can add a call toToList
:使用
HashSet
。例如:打印
Use a
HashSet<T>
. For example:prints
您可以使用 LINQ 中的 Distinct 扩展方法
You can use Distinct extension method from LINQ
除了 LINQ 的
Distinct
扩展方法之外,您还可以使用HashSet
您使用集合初始化的对象。这很可能比 LINQ 方式更有效,因为它使用哈希代码 (GetHashCode
) 而不是IEqualityComparer
)。事实上,如果适合您的情况,我首先会使用
HashSet
来存储项目。Apart from the
Distinct
extension method of LINQ, you could use aHashSet<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 anIEqualityComparer
).In fact, if it's appropiate for your situation, I would just use a
HashSet
for storing the items in the first place.在 .Net 2.0 中,我非常确定这个解决方案:
In .Net 2.0 I`m pretty sure about this solution: