Qwe*_*rty 1 .net sorting ienumerable distinct-values
我有一个很大的值列表(100-200个字符串),我需要返回一个明确的列表.使用.NET执行此操作的最有效方法是什么?我能想到的两种方式是:
如果字典方法的原始速度更快,请考虑围绕代码可维护性的权衡决策.
Enumerable.Distinct如果你只做一次,我希望和使用字典一样快.如果你想能够添加/删除值并保持清晰度,你可以构建一个HashSet<string>(这基本上是我期望Distinct在幕后做的,但Distinct()显然会在找到它们时返回新值,维持秩序.
实际上,只需使用:
HashSet<string> distinctItems = new HashSet<string>(list);
Run Code Online (Sandbox Code Playgroud)
如果你不介意排序混乱,那将是一个非常好(和简单)的解决方案.它比使用a更简单Dictionary,并且在概念上也更简洁(因为你真的不想将键映射到值).
(与以往一样,我建议首先找到最易读的解决方案,然后对其进行基准测试 - 如果它"足够快",那么请继续使用.如果你想将它作为另一个查询的一部分,那么Distinct可能是最易读的方法.否则,我建议HashSet.)