2013-04-04 59 views
1

我在EF中使用linq查詢出現問題。使用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; 

什麼,我做錯了什麼?

回答

-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(); 
+1

不起作用。 'JOIN'條件下不能使用'> ='。 – MarcinJuraszek 2013-04-04 10:04:16

+0

我修改了我的答案,不使用加入比較。在unitOfWork.Get () 在unitOfWork.Get () 其中b.left> = a.left && b.right <=一個 「變種查詢=從由B: – 2013-04-04 10:08:52

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; 
+0

我使用這個.right && a.ID == 1 select b;' 這是有用的,但我現在得到的錯誤: {「LINQ to Entities does not recognized the method'System.Linq.IQueryable'1 [ptin.socialhub.shp.Modules.DomainsService.BusinessObjects.Domain] Get [Domain]()'方法,並且此方法不能轉換爲商店表達式。「} – user2110824 2013-04-04 10:21:29