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();