做一些東西linq左連接查詢但面臨一些問題。沒能得到下面的SQL查詢需要轉換成LINQLinq左連接查詢在c#
INSERT INTO tbl_service_order_attributes_versioning(ServiceOrderNo, AttributeId, AttributeValue, parentid, AttributeType, Dt_Stamp, VERSION)
SELECT
T.ServiceOrderNo, T.COIID, T.COI_Identifier,
@pid, 'MBM', getDate(), @ORDERVERSION
FROM
#temp1 T
LEFT JOIN
tbl_service_order_attributes_versioning O WITH(NOLOCK)
ON T.ServiceOrderNo = O.ServiceOrderNo COLLATE database_default
AND T.COIID = O.AttributeID
AND O.PARENTID = @pid
WHERE
O.ServiceOrderNo IS NULL
我已經轉換此查詢到LINQ查詢正確的結果:
var soiAttr = (from s in ctxParser.TBL_SERVICE_ORDER_ATTRIBUTES_VERSIONING
where s.ParentId == parentId
select s).ToList();
var resultJoinCOI = (from soaI in soiAttr
join iFoi in listFOI on soaI.ServiceOrderNo equals iFoi.fulfilmentOrderItemIdentifier
where iFoi.coiId == soaI.AttributeId &&
iFoi.parentId == parentId &&
soaI.ServiceOrderNo == null
select iFoi).ToList();
if (resultJoinCOI.Count > 0)
{
var listToInsert = (from item in resultJoinCOI
select new TBL_SERVICE_ORDER_ATTRIBUTES_VERSIONING
{
ServiceOrderNo = item.fulfilmentOrderItemIdentifier,
AttributeId = item.coiId,
AttributeValue = item.coiIdentifier,
ParentId = parentId,
AttributeType = "MBM",
DT_Stamp = DateTime.Now,
VERSION = orderVersion
});
ctxParser.TBL_SERVICE_ORDER_ATTRIBUTES_VERSIONING.AddRange(listToInsert);
ctxParser.SaveChanges();
}
被執行的代碼,但結果是不正確的。
預期結果是什麼,結果如何? –
在sql中有LEFT JOIN在linq中如何做。 bcz linq查詢soaI.ServiceOrderNo == null其不正確。 –
如果我們不知道物體的類型,那麼很難提供幫助。儘管我們做了,但預期的結果仍然是隱身。你期待在'resultJoinCOI'接受什麼?另外,'join'是一個'INNER JOIN',而不是'LEFT',所以'key等於null'的簡單條件可能不夠 –