我有课:
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)