List<T>去重问题!
写的去重类
/// <summary>
/// 去重
/// </summary>
public class DistinctExpert : IEqualityComparer<ExpertsModel>
{
public bool Equals(ExpertsModel x, ExpertsModel y)
{
return x.id.Equals(y.id);
}
public int GetHashCode(ExpertsModel obj)
{
return obj.id.GetHashCode();
}
}
调用代码:
allSearchExperts.Distinct(new DistinctExpert()).ToList<ExpertsModel>();
结果根本不管用。。。
咋回事啊?
另外网上找的的另两种方法也不好使。。
①
var ids = rl.GroupBy(m => m.sm.em.tyid).Select(m => new
{
tyid = m.FirstOrDefault().sm.em.tyid
});
rl = rl.Where(m => ids.Select(mo => mo.tyid).Contains(m.sm.em.tyid)).ToList();
②
var q = (from e in rl
select e)
.Distinct();
rl = q.ToList();
list
equals
------解决方案--------------------/// <summary>
/// 去重
/// </summary>
public class DistinctExpert : IEqualityComparer<ExpertsModel>
{
public bool Equals(ExpertsModel x, ExpertsModel y)
{
return (x.id == y.id);
}
public int GetHashCode(ExpertsModel obj)
{
return obj.id.GetHashCode();
}
}
参考:
http://blog.csdn.net/q107770540/article/details/5784646
http://msdn.microsoft.com/