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

linq筛选重复记录
返回A表记录,如下:


aid    name    
2     peter
2     peter
3     donnie

list是返回以上的结果。

现在想通过linq,来筛选掉重复记录

得到最终结果为
2 peter
3 donnie

并以list返回……

请教!

------解决方案--------------------
linq去重问题
http://www.cnblogs.com/8765h/archive/2012/03/01/2376345.html
------解决方案--------------------
var query=list.Distinct();
如果要按照什么比较,写个比较器
参考http://blog.csdn.net/chinajiyong/article/details/8161944
http://www.cnblogs.com/aaa6818162/archive/2011/09/15/2177118.html
------解决方案--------------------
自定义比较器:

public class UserComparer : IEqualityComparer<UserModels>
    {
        public bool Equals(UserModels t1, UserModels t2)
        {
            return (t1.aid== t2.aid && t1.name== t2.name);
        }

        public int GetHashCode(UserModels obj)
        {
            return obj.ToString().GetHashCode();            
        }
    }
     //调用
     var list = list.Distinct(new UserComparer()).ToList()

------解决方案--------------------
没那么麻烦
list.GroupBy(x => new { x.aid, x.name }).Select(x => x.First());