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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章