LINQ查询根据List的一个字段去重,某个字段数据相同的只取一条(可按条件)

  return (from m in db.XX
                    join d1 in db.XXX on m.INCOMING_SEQ equals d1.INCOMING_SEQ
                    join o in db.INCOMING_ORIGIN on m.INCOMING_ORIGIN_SEQ equals o.INCOMING_ORIGIN_SEQ
                    into org
                    from t in org.DefaultIfEmpty()
                    join d in db.DEPT on m.DEPT_SEQ equals d.DEPT_SEQ
                    join log in db.LOGIN_USER on d.DEPT_SEQ equals log.DEPT_SEQ
                    where log.ACCOUNT == account && m.INCOMING_PROCESS_ID == 20
                    select new QueryNoNoticePickUpOut
                    {
                        File = string.IsNullOrEmpty(d1.SIGN_JPG) ? null : url + folder + "/" + d1.SIGN_JPG,
                        Seq = m.INCOMING_SEQ,
                        Numbers = m.NUMBERS,
                        Recipient = m.USER_NAME,
                        OriginName = t == null ? "" : t.INCOMING_ORIGIN_NAME,
                        Date = m.ADD_TIMESTAMP
                    }).GroupBy(c=>c.Seq).Select(c=>c.Any(d=>d.File!=null)? c.Where(d=>d.File!=null).FirstOrDefault() : c.FirstOrDefault()).ToList();

重点:

return 返回的数据是多条,但是需要取一条,取一条的逻辑是,如果数据中文件File 不为null,那就去这条,不然就取第一条

.GroupBy(c=>c.Seq).Select(c=>c.Any(d=>d.File!=null)? c.Where(d=>d.File!=null).FirstOrDefault() : c.FirstOrDefault()).ToList();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值