2013-08-21 22 views
-2

我有两个表与一个(父)许多(细节)的关系。如何使用内部加入和除了在Linq EntityFramework 4

我想在Linq中编写这个查询(用SQL编写)。如你所见;这是一个内部联接上一个子查询,其中包含了除:

select pa.* from dbo.Parent pa 
inner join 
(
     select p.ID from dbo.Parent p 
      except 
       (
        select d.ID from dbo.Details d where (d.ParentID = 371) 
       ) 
) p 
on pa.ID = p.ID 
where pa.ID <> 371 
+1

LINQPad是完美的像这个。 – Yuck

+0

这是一个非常糟糕的sql查询,并且你要求我们做一个非常糟糕的linq查询......子查询非常可疑,试着用连接和where子句重构它。在那个时候,你的linq查询应该更有意义。 – priehl

回答

0
var result = Parent.Where(p=>Details.Where(d=>d.ParentID!=371) 
            .Select(d=>d.ID) 
            .Contains(p.ID)); 
0

景景大概是在正确的道路上,但这里有一个使用连接,

parent.Join(Details , 
     parent => parent.Id, 
     detail => detail.Id, 
     (parent, detail) => new { P = parent, D = detail) 
     .Where(e => e.D.ParentId != 371) 
     .Select(e => e.P);