[英]Converting SQL to LINQ with INNER JOIN()?
我正在努力將下面的等價物寫為LINQ。 確實,我想我只是在如何表示INNER JOIN ()
部分而苦苦掙扎。 這稱為嵌套聯接嗎? 匿名加入? 我什至不確定。 無論如何,非常感謝任何能指出我真實觀點的人。 即使這就是所謂的名稱,所以我也可以對其進行適當的Bing處理。
SELECT p.PersonID, p.FirstName, p.MiddleName, p.LastName, cp.EnrollmentID, cp.EnrollmentDate, cp.DisenrollmentDate
FROM vwPersonInfo AS p
INNER JOIN (
SELECT c.ClientID, c.EnrollmentID, c.EnrollmentDate, c.DisenrollmentDate
FROM tblCMOEnrollment AS c
LEFT OUTER JOIN tblWorkerHistory AS wh
ON c.EnrollmentID = wh.EnrollmentID
INNER JOIN tblStaffExtended AS se
ON wh.Worker = se.StaffID
WHERE (wh.EndDate IS NULL OR wh.EndDate >= getdate())
AND wh.Worker = --WorkerID Param Here
) AS cp
ON p.PersonID = cp.ClientID
ORDER BY p.PersonID
只需將內部查詢放在其自己的變量中即可。 (它將轉換為一個單獨的SQL表達式)
var innerQuery = from x in db.tblCMOEnrollment
where ...
select ...;
var query = from a in vwPersonInfo
join b innerQuery on p.PersonID equals cp.ClientID
select ...;
我認為您可以通過編寫第二種方法並加入該方法來做到這一點:
private static IEnumerable<Table> GetData(int joinKey)
{
return (from x in context.TableB.Where(id => id.Key == joinKey select x).AsQueryable();
}
然后,您可以執行常規查詢:
var query = from c in context.TableA
join GetData(c.PrimaryKeyValue)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.