簡體   English   中英

使用INNER JOIN()將SQL轉換為LINQ?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM