我正在尝试过滤重复值的IEnumerable对象,所以我想从中获取不同的值,例如,假设它有几天:
周一 星期二 星期三 星期三
我想过滤它并返回:
周一 星期二 星期三
在.net 2.0中执行此操作的最有效方法是什么?
答案 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不允许使用重复项,也不需要键/值对。