0
在下面的查詢中,Distinct
調用似乎並沒有被做任何事情:爲什麼Distinct不能在這個LINQ查詢中工作?
using (var db = new AccountsDbContext())
{
var uniques = db.AccountMappings
.Select(m => new CanvasAccount { UserName = m.CanvasUser, Password = m.CanvasPassword })
.OrderBy(m => m.UserName)
.ToList()
.Distinct(new CanvasAccountComparer());
accounts.AddRange(uniques);
}
該查詢返回三個CanvasAccount
對象,但有兩個那些具有完全相同的用戶名和密碼。我的比較器如下:
class CanvasAccountComparer : IEqualityComparer<CanvasAccount>
{
public bool Equals(CanvasAccount x, CanvasAccount y)
{
return (x.UserName.ToLower() == y.UserName.ToLower()) && (x.Password == y.Password);
}
public int GetHashCode(CanvasAccount obj)
{
return obj.GetHashCode();
}
}
我推薦使用'ToLowerInvariant'而不是'ToLower' – CodesInChaos 2015-03-19 08:49:03