2012-01-16 10 views
0

私はLINQと同等のものを書く方法に苦労しています。本当に私はINNER JOIN()の部分をどのように表しているのか苦労していると思います。これはネストされた結合と呼ばれていますか?匿名の参加?私は確信していません。とにかく、私に真実を指摘できる人に大きな感謝。それがちょうどこれが呼ばれるものであっても、私はそれを適切にBINGすることができます。INNER JOIN()を使用してSQLをLINQに変換していますか?

私はあなたが第二の方法を書いて、その方法で接合することで、これを行うことができると思い
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 
+1

これは参考になります:http://weblogs.asp.net/rajbk/archive/2010/03/12/joins-in-linq-to-sql .aspx – David

+0

@David:私の無知が私に私が尋ねているものが何かを理解できないようにしていない限り、私が求めていることの例は見当たらないが、いいサイトのように見える。:) –

答えて

4

だけインナーを入れてそれ自身の変数で照会します。 (単一の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 ...; 
+0

それは働いた、ありがとう! –

0

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) 
関連する問題