这在某种程度上与这个 ( Getting all unique Items in a C# list) 问题有关。
虽然上面的问题是在谈论一个简单的值数组。我有一个从第三方网络服务返回的对象:
public class X
{
public Enum y {get; set;}
}
我有这些对象的列表 List<x> data;
,总共约有 100 条记录,但可变。现在我想要属性列表中的所有可能值 y
我想绑定(bind)这个做 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;
我的直觉是 HashSet,但我不是 100% 确定。
如果有人有任何想法,请接受更好的想法?
最佳答案
如果是一次性操作 - 使用 .Distinct
。如果您要一次又一次地添加元素 - 使用 HashSet
关于c# - HashSet 或 Distinct 以读取对象 List<> 中属性的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296495/