HashSet 或 Distinct 以读取对象列表 <> 中不同的属性值

Lia*_*iam 5 c# linq performance hashset c#-4.0

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

如何最有效的方法来做到这一点?

我可以想到两种算法:

var data = HashSet<Enum> hashSet = new HashSet<Enum>(xs.Select(s => s.y));
chkBoxList.DataSource = data;
Run Code Online (Sandbox Code Playgroud)

或者

var data = xs.Select(s => s.y).Distinct();
chkBoxList.DataSource = data;
Run Code Online (Sandbox Code Playgroud)

我的直觉是 HashSet 但我不是 100% 确定。

如果有人有任何想法,可以接受更好的想法吗?

Ana*_*ion 3

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