EF 去重distinct

去重 就是除去重复的数据。

1:重复的依据是什么?

2:去重之后要的结果是什么?

去重的依据 有时候 是一列  两列 

要的结果是一列 也可能是个model

 

个人总结的情况

1:一般情况下去重是根据id这一列来的  要的结果也是这一列

var  result=table.select(t=>t.id).distinct().tolist();

2: 去重依据是 两列  id order   要的结果也是这两列

var  result=table.select(t=>new{t.id,t.order}).distinct().tolist();

3:去重依据是俩列  要的结果是model 之后还要去分页或者各种条件

这种情况就没办法像前两种这样的得不到想要model,所以需要自定义去重

 

public class DistnictTourId自定义名字 : IEqualityComparer<去重类model>
        {
            public bool Equals(去重类  x, 去重类  y)
            {
                if (x == null || y == null) return false;
                if (x.TourOrderId == y.TourOrderId&&x.order== y.order) return true; else return false;
            }

            public int GetHashCode(去重类 obj)
            {
                if (obj == null) return 0;
                else return obj.TourOrderId.GetHashCode()^ obj.CityId.GetHashCode();
            }
        }

自定义去重 就是自己说明要根据哪几列去重 

以上列子是 TourOrderId和order   下面的那个^ 其实含义就是并且的意义

自定义完了之后使用也很方便

var  test=db.去重类listmodel.distinct(new 自定义名字()).orderby..等等一系列操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值