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%确定。
如果有人有任何想法,愿意接受更好的想法?
如果是一次性操作 - 使用 .Distinct
.如果您要一次又一次地添加元素 - 请使用HashSet
HashSet
的,因为它在构造了hashset对象之后保留了对象,并且foreach-ing它不需要昂贵的操作。
另一方面,每次枚举 DataSource 时,都可能会评估 Distinct
枚举器,并且将重复删除重复值的所有工作。