2011-12-20 57 views
-2

我需要有多個左連接的LINQ查詢的幫助。這是LINQ到EF4。我編寫了SQL並將其轉換爲LINQ,但不知道LINQ中的'連接'是內部連接。我已經看過所有的例子,但只能找到一個左連接的例子。任何幫助深表感謝!LINQ查詢中的多個左連接C#

這裏的SQL:

SELECT 
    s.FirstName, s.LastName, s.StakeholderID, op.ParticipantID, op.SchoolID, oc.CycleNumber, 
    st.SessionTypeID, st.SessionDescription, CONVERT(varchar(10),os.SessionDt,101) AS SessionDTrr, 
    os.OSStatus, oee.EvaluatorID 
FROM 
    Stakeholders s LEFT JOIN ObservationParticipants op ON s.StakeholderID = op.StakeholderID 
    LEFT JOIN ObservationEvaluateeEvaluators oee ON op.ParticipantID = oee.EvaluateID 
    LEFT JOIN ObservationCycles oc ON oee.ObservationEvaluateeEvaluatorID = oc.ObservationEvaluateeEvaluatorID 
    LEFT JOIN ObservationSessions os ON oc.ObservationCycleID = os.ObservationCycleID 
    LEFT JOIN SessionTypes st ON os.SessionTypeID = st.SessionTypeID 
WHERE 
    oee.EvaluatorID = evaluatorID 

下面是我轉換了上述說法太LINQ。儘管我需要連接。任何人都可以協助將LINQ中的連接轉換爲左連接嗎?

from s in Stakeholders 
join op in ObservationParticipants 
on s.StakeholderID equals op.StakeholderID 
join oee in ObservationEvaluateeEvaluators 
on op.ParticipantID equals oee.EvaluateID 
join oc in ObservationCycles 
on oee.ObservationEvaluateeEvaluatorID equals oc.ObservationEvaluateeEvaluatorID 
join os in ObservationSessions 
on oc.ObservationCycleID equals os.ObservationCycleID 
join st in SessionTypes 
on os.SessionTypeID equals st.SessionTypeID 
where oee.EvaluatorID == evaluatorID 
select new { 
      s.FirstName, s.LastName, s.StakeholderID, 
      op.ParticipantID, op.SchoolID, oc.CycleNumber, 
      st.SessionTypeID, st.SessionDescription, os.SessionDt, 
      os.OSStatus 
      } 
+0

http://codingsense.wordpress.com/2009/03/08/left-join-right-join-using-linq/ - 我希望,你可以幫忙 – sinanakyazici

+0

如果你正確設置LinqPad,可以根據您當前的查詢生成linq查詢。 – MethodMan

+0

我實際上使用LinqPad創建上面的LINQ查詢。我不認爲LinqPad可以將SQL轉換爲LINQ。 – EFX

回答

0

看起來像你是混合技術。 linq查詢sql查詢關係數據庫的對象。非常不同的事情。有LINQ的不同實現: 的LINQ to SQL EF查詢語言 LINQ爲xml LINQ到NH LINQ到廚房水槽

每個LINQ提供程序將不同的翻譯查詢,它並不總是顯而易見如何或在哪裏翻譯會發生。

在這種情況下,您需要告訴我們您正在使用的linq提供程序,從那裏我們可以幫助將sql查詢轉換爲linq2?聲明。

+0

林不知道你是什麼意思的LINQ提供商。這是在使用實體框架的項目中。這是一個C#項目,我正在使用linq實體。 SQL語句提供給我,我只用它作爲轉換爲LINQ的基礎。我之前採用這種方法取得了成功。 – EFX

+0

linq提供程序是IQueryable的實現。 linq的基礎。 –