2011-12-20 13 views
-2

複数の左結合を持つLINQクエリでは、ヘルプが必要です。 LINQ to EF4です。私はSQLを書いて、LINQの 'join'が内部結合であることを知らずにLINQに変換しました。私はすべての例を見てきましたが、残っているのは1つの例だけです。どんな助けでも大歓迎です!ここで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各LINQプロバイダは異なり、クエリを変換します

台所のシンクにNHに LINQをXMLに EFクエリ言語に LINQをSQLへ LINQは、それが必ずしも明らかではないのです方法や場所の翻訳を開催されます。

この例では、使用しているlinqプロバイダをお知らせいただく必要があります。そこから、SQLクエリをlinq2に変換するのに役立ちますか?ステートメント。

+0

linqプロバイダが何を意味するか分かりません。これは、Entity Frameworkを使用するプロジェクトにあります。これはC#プロジェクトです。エンティティにlinqを使用しています。 SQLステートメントは私に提供され、私はlinqに変換するためのベースとしてのみ使用しました。私は成功の前にこのアプローチに従ってきました。 – EFX

+0

linqプロバイダはIQueryableの実装です。 linqの基礎。 –

関連する問題