2017-10-12 12 views
2

私はLINQで新しく、私はSQLサーバで書いたクエリを持っています。私はLINQに変換/変換したいと思います。 THXlinq-to-sqlの右外部結合

これは私のSQLです:

SELECT Contact.Name, Contact.E-Mail, 
     Contact Business Relation.No_ 
FROM Contact Business Relation RIGHT OUTER JOIN 
      Contact ON Contact Business Relation.Contact No_ = Contact.Company No_ 
WHERE (Contact.E-Mail = @mail) 


これは私のLINQ(私は正しい方法でそれをやったかわからない)です:

   var query = from cbr in db.Contact_Business_Relation 
          join c in db.Contact 
          on cbr.Contact_No_ equals c.Company_No_ into f 
          from c in f.DefaultIfEmpty() 
          where c.E_Mail == Mail 
          select new 
          { 
           Mail = c.E_Mail, 
           No = cbr.No_ 
          }; 
+0

[LINQ左と右の参加参加](https://stackoverflow.com/questions/4497086/linq-left-join-and-right-join) – CodeLikeBeaker

+1

あなたドンの可能性の重複't。ナビゲーションプロパティを持つ* proper *モデルを作成して、関連するオブジェクトをロードするためにジョインを使用する必要はありません。 –

答えて

1

は、残念ながら、右の合流はありませんlinqで。ただし、代わりに左結合を使用するようにクエリを並べ替えることができます。

var query = from c in db.Contact 
      join cbr in db.Contact_Business_Relation 
      on c.Company_No_ equals cbr.Contact_No_ into f 
      from cbr in f.DefaultIfEmpty() 
      where c.E_Mail == Mail 
      select new 
      { 
       Mail = c.E_Mail, 
       No = cbr.No_ 
      }; 

Join Clause

+0

悪い:(しかし、私はdat、tnx aducciを試します –

+2

オブジェクト間のリレーションを設定するのではなく、テーブルであるかのようにエンティティを使用して元の問題を修正する方がいいです。このコードはすべて単一のdb.Contactで置き換える必要があります。インクルード(c => c.Relations).Where(c => c.E_Mail == Mail) ' –

+0

@PanagiotisKanavos - 合意しましたが、手動ジョインを使用する必要があることがあります – Aducci

関連する問題