Linq - JackHu88/Comm GitHub Wiki

Join查询就交集

var lstUpdateItems =
    (from hcdb in lstHCDBUDI
     join ras in lstRASUDI on
     new
     {
         TypeModelID = hcdb.TypeModelID,
         UDIID = hcdb.UDIID
     } equals
     new
     {
         TypeModelID = ras["TypeModelID"] == null ? "" : ras["TypeModelID"].ToString(),
         UDIID = ras["UDIID"] == null ? "" : ras["UDIID"].ToString()
     }
     into temp
     from ras in temp.DefaultIfEmpty()
     select new UDI
     {
         TypeModelID = ras == null ? "" : ras["TypeModelID"].ToString(),
         UDIID = ras == null ? "" : ras["UDIID"].ToString(),
         MainDICode = hcdb.MainDICode,
         UDI21 = hcdb.UDI21,
         UDI22 = hcdb.UDI22,
         UDI23 = hcdb.UDI23,
         UDI24 = hcdb.UDI24,
         UDI30List = hcdb.UDI30List,
         UDI31List = hcdb.UDI31List
     }).Where(item => item.TypeModelID != "" && item.UDIID != "").ToList();

实现NOT IN的查询

//var lstNewItems = lstHCDBUDI.Except(lstUpdateItems).ToList();
var lstNewItems = lstHCDBUDI.Where(hcdb => !lstUpdateItems.Any(u => u.TypeModelID == hcdb.TypeModelID && u.UDIID == hcdb.UDIID)).ToList();