c# - HashSet 或 Distinct 以读取对象 List<> 中属性的不同值

标签 c# performance linq c#-4.0 hashset

这在某种程度上与这个 ( 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/

相关文章:

c# - C# 中的泛型类成员?

c# - linq 成员不支持 SQL 转换

c# - 从列表中删除不常见的项目

c# - 可感知时间/更新的集合的枚举器

c# - 如何识别拼写不同的相似词

c# - 在 Windows XP 中获取最近的文件夹和最近的文件

c# - FileHelperEngine 构造函数 - InvalidcastException

java - 增强的 for 循环与手动处理对象

c++ - 在 C++ 中为二叉搜索树创建删除函数

mysql - 如何优化此 MySQL 查询的运行时间?