2012-04-09 8 views
2

次のSQLクエリのように、EF 4.0クエリでlinq 2 sqlを作成しようとしています。LINQとEntityFrameworkを使用して結合を実装する方法

SELECT * FROM Role 
LEFT JOIN Queue 
ON Role.RoleId = Queue.RoleId 
WHERE QueueId = 361 

どのように私はEF 4.0でこれを行うことができますか?

+1

Linqを意味します。 LinqからSQLへの変換ではありません。 –

+0

@AndrewBarber:いいえ、私は彼がLINQ to SQLを意味すると確信しています。または、彼がEFとマッピングしているので、より正確にはLINQ to Entities。ここをクリックしてください:http://msdn.microsoft.com/en-us/library/bb386964.aspx –

+2

@Mike LINQ to SQLは、EFとは全く異なる製品です。彼がnHibernateについて話していたと言えるでしょう。 –

答えて

4

通常、これはあなたがエンティティを取得する際に、しかし、あなたはまた、次のようにこれを行うことができます読み込まれているナビゲーションプロパティを使用して行われます:

from r in Roles 
from q in Queues 
where r.RoleId == q.RoleId 
where q.QueueId == 361 
select new { r.RoleId, q.QueueId /*other bits you want*/} 
+0

こんにちは。私は複数のテーブルを持っていた場合、これは動作しますか? – Ali

+0

@確かに、* from *はlinqのクエリに使用可能なデータソースを示します。これはSQL内部のJOINの概念に似ています。そして、linqクエリがSQLに変換されると、これはSQL JOINに変わります。私は、* join *ステートメントの代わりに、より多くの読み込み可能性があるので、複数の* from *を好きにしています。 –

+0

助けてくれてありがとうございます。 – Ali

3

は、次のことをしようと私はそれが私が希望

を役に立てば幸い結合の詳細を検索することをお勧めします

var result=(from p in Roles 
join pa in Queue on p.RoleId equals pa.RoleId into temproles 
from addresses in temproles.DefaultIfEmpty() where temproles.queueId = 361 
select new { p, pa}); 
関連する問題