我有一个大的列表(~110,000个字符串),我需要将它与类似大小的列表进行比较.
列表A来自1个系统.列表B来自SQL表(我只能读,没有存储过程等)
找到列表A中哪些值不再存在于列表B中的最佳方法是什么?
100,000个字符串是否需要在数组中处理?
谢谢
我有课:
class SomeClass
{
public string Name{get;set;}
public int SomeInt{get;set;}
}
class SomeComparison: IEqualityComparer<SomeClass>
{
public bool Equals(SomeClass s, SomeClass d)
{
return s.Name == d.Name;
}
public int GetHashCode(SomeClass a)
{
return (a.Name.GetHashCode() * 251);
}
}
Run Code Online (Sandbox Code Playgroud)
我也有两个List<SomeClass>大叫list1和list2
在我以前之前:
var q = (from a in list1
from b in list2
where a.Name != b.Name
select a).ToList();
Run Code Online (Sandbox Code Playgroud)
这花了大约1分钟来执行.我现在有:
var q = list1.Except(list2,new SomeComparison()).ToList();
Run Code Online (Sandbox Code Playgroud)
这需要不到1秒!
我想了解Except方法的作用.该方法是否为每个列表创建哈希表,然后执行相同的比较?如果我要进行大量的比较,我应该创建一个Hashtable吗?
现在我没有列表,而是有两个HashSet<SomeClass>叫做 hashSet1和hashSet2
当我做:
var q …Run Code Online (Sandbox Code Playgroud)