76

クエリは次のとおりです。

select s.* from Service s 
inner join ServiceAssignment sa on sa.ServiceId = s.Id
where  sa.LocationId = 1

エンティティフレームワークで?

これは私が書いたものです:

 var serv = (from s in db.Services
                join sl in Location on s.id equals sl.id
                where sl.id = s.id
                select s).ToList();

しかし、それは間違っています。誰かが私を道に導くことができますか?

4

3 に答える 3

67

誰かがメソッド構文に興味を持っている場合、ナビゲーション プロパティがあれば簡単です。

db.Services.Where(s=>s.ServiceAssignment.LocationId == 1);

そうしないと、Join()私が気付いていないオーバーライドがない限り、かなり危険に見えると思います(そして私はメソッド構文の純粋主義者です):

db.Services.Join(db.ServiceAssignments, 
     s => s.Id,
     sa => sa.ServiceId, 
     (s, sa) => new {service = s, asgnmt = sa})
.Where(ssa => ssa.asgnmt.LocationId == 1)
.Select(ssa => ssa.service);
于 2016-04-21T15:34:17.347 に答える
8

利用可能な場合は、ナビゲーション プロパティを使用できます。SQL で内部結合を生成します。

from s in db.Services
where s.ServiceAssignment.LocationId == 1
select s
于 2014-09-17T16:07:19.063 に答える