两个列表的差异C#

时间:2012-08-15 02:38:52

标签: c# list set-difference

我有两个字符串列表,这两个字符串都是~300,000行。列表1比列表2有几行。我要做的是找到列表1中但不在列表2中的字符串。

考虑到我需要比较多少个字符串,Except()是否足够好还是有更好的(更快)?

2 个答案:

答案 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();