0
出於興趣如何IEqualityComparer的具體實現的GetHashCode工作?Linq Union - IEqualityComparer和執行次數
我問的原因是我使用linq來聯合兩個集合,並且當只有左集合有一個項GetHashCode被調用兩次。除此之外,如果兩個集合都有一行,則會調用四次。
這是粗糙的打字,但你會明白的。 GetHashCode被調用兩次,我猜對於listOne中的一個項目是兩次?
例如
var listOne = new List<SearchResult>{new SearchResult{Name="Blah"}};
var listTwo = new List<SearchResult>();
listOne.Union(listTwo, SearchResultComparer);
public class SearchResultComparer : IEqualityComparer<SearchResult>
{
public bool Equals(SearchResult x, SearchResult y){....}
public int GetHashCode(SearchResult obj)
{
unchecked
{
int result = 0;
result = (result * 397)^(obj.Name != null ?
return result;
}
}
}
感謝
你有什麼看起來像一個未完成的行,就在你的return語句之上。未加密的括號,未完成的三元聲明。 – 2011-06-16 16:02:18