使用linq在其他结果查询中查询

时间:2013-04-04 09:59:32

标签: c# linq

我在EF中使用linq查询时出现问题。

基本上,我要做的就是这样,用简单的SQL:

SELECT
    t2.*
FROM
    [SHP_Console2].[dbo].[Domain] t1
INNER JOIN
    [SHP_Console2].[dbo].[Domain] t2
    ON t2.[left] >=t1.[left] AND t2.[right]<=t1.[right]
WHERE
    t1.ID =1

我无法用linq做到这一点。

我想这个:

 from a in DomainRep.Where(c => c.ID == domainID).Select(c => new { c.left, c.right })
 from b in DomainRep.Where(x => x.left >= a.left && x.right <= a.right)
 select a;

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您将查询与匿名类型混合在一起。你不能这样做。

您也不能将JOIN>=条件一起使用 - LINQ不支持这种语句。但是,可以使用alternative syntax完成。

from a in DomainRep
from b in DomainRep
where b.left >= 1.left && b.right <= a.right && a.ID = 1
select b;

答案 1 :(得分:-1)

修改:参考:http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/428c9db2-29f6-45d8-ab97-f00282397368/

             var query = (from a in DomainRep
             from b in DomainRep 
             where a.left >= b.left
             select b)
            .ToList();