首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

(linq) EF如何去重复

2013-10-25 
(linq) EF怎么去重复tb1表有a,b,c,d,e五个字段如果b,c,d三个字段都相同就视为重复.怎么去重复只保留一条?g

(linq) EF怎么去重复
tb1表有a,b,c,d,e五个字段
如果b,c,d三个字段都相同就视为重复.
怎么去重复只保留一条?(linq) EF如何去重复
group  by 我只会分组1个字段
[解决办法]
1. group by 可以分组N个字段:  group x by new {x.id,x.name,x....}
2. Distinct 方法有个重载方法,重写IEqualityComparer来实现去重复,参考:
http://msdn.microsoft.com/en-us/library/bb338049.aspx
[解决办法]
方法一:分组N个字段
list.GroupBy(x => new { x.b, x.c,x.d }).Select(…);

方法二:构造Distinct比较器,例


public class UserComparer : IEqualityComparer<UserModels>
    {
        public bool Equals(UserModels t1, UserModels t2)
        {
            return (t1.b== t2.b && t1.c== t2.c &&  && t1.d== t2.d);
        }
 
        public int GetHashCode(UserModels obj)
        {
            return obj.ToString().GetHashCode();            
        }
    }
     //调用
     var list = list.Distinct(new UserComparer()).ToList()

热点排行