1

我正在尝试过滤重复值的 IEnumerable 对象,因此我想从中获取不同的值,例如,假设它包含天数:

星期一 星期二 星期三 星期三

我想过滤它并返回:

星期一星期二星期三

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

4

3 回答 3

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;
    }

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

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

于 2008-12-05T17:06:57.840 回答
1

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

于 2008-12-05T17:08:12.377 回答
0

另一种选择是使用 HashSet<T> - HashSet 不允许使用重复项并且不需要键/值对。

于 2008-12-05T17:09:02.813 回答