我有两个字符串列表,这两个字符串都是~300,000行。列表1比列表2有几行。我要做的是找到列表1中但不在列表2中的字符串。
考虑到我需要比较多少个字符串,Except()
是否足够好还是有更好的(更快)?
答案 0 :(得分:5)
在内部,可枚举的Except
扩展方法使用Set<T>
来执行计算。它将至少与任何其他方法一样快。
使用list1.Except(list2)
。
它将为您提供最佳性能和最简单的代码。
答案 1 :(得分:1)
我的建议:
HashSet<String> hash1 = new HashSet<String>(new string[] { "a", "b", "c", "d" });
HashSet<String> hash2 = new HashSet<String>(new string[] { "a", "b" });
List<String> result = hash1.Except(hash2).ToList();