HashSet 或 Distinct 用于读取 List 中属性的不同值<>的对象

本文关键字:对象 属性 Distinct 用于 读取 List HashSet | 更新日期: 2023-09-27 18:34:49

这在某种程度上与此(获取 C# 列表中的所有唯一项(问题有关。

上面的问题是在谈论一个简单的值数组。我有一个从第三方 Web 服务返回的对象:

public class X
{
    public Enum y {get; set;}
}

我有一个这些对象的列表List<x> data;,总共大约有 100 条记录,但可变。现在我想要属性y列表中的所有可能值,我想绑定它做一个CheckBoxList.DataSource(以防万一(。

最有效的

方法是什么?

我能想到两种算法:

var data = HashSet<Enum> hashSet = new HashSet<Enum>(xs.Select(s => s.y));
chkBoxList.DataSource = data;

var data = xs.Select(s => s.y).Distinct();
chkBoxList.DataSource = data;

我的直觉是哈希集,但我不是100%确定。

如果有人有任何想法,愿意接受更好的想法?

HashSet 或 Distinct 用于读取 List 中属性的不同值<>的对象

如果是一次性操作 - 使用 .Distinct .如果您要一次又一次地添加元素 - 请使用HashSet

HashSet的,因为它在构造了hashset对象之后保留了对象,并且foreach-ing它不需要昂贵的操作。

另一方面,每次枚举 DataSource 时,都可能会评估 Distinct 枚举器,并且将重复删除重复值的所有工作。