使用C#和LINQ比较两个大型字符串列表的最佳方法是什么?
我有一个很大的列表(~110,000个字符串),我需要将它与类似大小的列表进行比较。
列表A来自1个系统。 列表B来自SQL表(我只能读取,没有存储过程等)
找到列表A中哪些值不再存在于列表B中的最佳方法是什么?
100,000个字符串是否需要在数组中处理?
谢谢
所以你有两个这样的列表:
List listA; List listB;
然后使用Enumerable.Except
:
List except = listA.Except(listB).ToList();
请注意,如果您想要忽略大小写:
List except = listA.Except(listB, StringComparer.OrdinalIgnoreCase).ToList();
您可以使用您选择的IEqualityComparer
替换最后一个参数。
使用LINQ:
var missing = listA.Except(listB).ToList();
出于兴趣,您是否必须使用List
? 因为在.net 3.5 SP1中,您可以使用HashSet和它的ExceptWith方法。 根据我的理解,HashSets专门针对两个集合之间的比较进行了优化。
List A = //get from file List B = //get from db var C = A.Except(B);
从这个问题中窃取,看起来你可以使用Except
方法。