猿问

Linq distinct无效,选择出来的还是重复项

 

测试方法:
List<Jury> list = new List<Jury>();
Jury a
= new Jury
{
UserId
= 11,
UserName
= "TT"

};
Jury b
= new Jury
{
UserId
= 11,
UserName
= "TT"

};
list.Add(a);
list.Add(b);
var tt
= list.Distinct(new JuryComparer());

 

自定义类: 裁判
public class Jury
{
public int UserId { get; set; }
public string UserName { get; set; }
}

 

比较类:
public class JuryComparer : IEqualityComparer<Jury>
{
public bool Equals(Jury x, Jury y)
{
return x.UserId.Equals(y.UserId);
}

public int GetHashCode(Jury obj)
{
return obj.GetHashCode();
}
}

 

 

呼唤远方
浏览 305回答 1
1回答

FFIVE

因为它先使用 GetHashCode 做判断了.           public int GetHashCode(Jury obj)        {            return 0;        } 使用上面方法修正你的 GetHashCode 函数,事实上就是让 JuryComparer 的第一次比较永为真,这样你的 x.UserId.Equals(y.UserId) 就成为决定性因素了.
随时随地看视频慕课网APP
我要回答