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