从.NET 2.0中的IEnumerable <t>列表中选择Distinct </t>

时间:2008-12-05 17:01:11

标签: vb.net ienumerable

我正在尝试过滤重复值的IEnumerable对象,所以我想从中获取不同的值,例如,假设它有几天:

周一 星期二 星期三 星期三

我想过滤它并返回:

周一 星期二 星期三

在.net 2.0中执行此操作的最有效方法是什么?

3 个答案:

答案 0 :(得分:3)

Dictionary<object, object> list = new Dictionary<object, object>();
foreach (object o in enumerable)
    if (!list.ContainsKey(o))
    {
        // Do the actual work.
        list[o] = null;
    }

Dictionary将使用哈希表来保存键,因此查找是有效的。

排序最多为O(n log(n))。具有高效散列函数的散列表通常优于它(O(1)查找)。

答案 1 :(得分:1)

制作另一个IEnumerable。排序原件。对于原始中的每个项目,如果新项目不包含旧项目,请添加它。

答案 2 :(得分:0)

另一种替代方案是使用HashSet&lt; T&gt; - HashSet不允许使用重复项,也不需要键/值对。