日期:2014-05-17  浏览次数:20433 次

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/