2013-03-09 78 views
1

怎麼寫纔會這樣子選擇在MS SQL相當於一個LINQ聲明:的LINQ的列(SELECT ...)聲明

... WHERE 
tblXref.Organization_Id IN (SELECT Organization_Id 
        FROM AppUser au INNER JOIN [User] u ON au.User_Id = u.Id 
        WHERE u.Username = usernameVariable) 

回答

5

嗯,這可能是簡單的單獨編寫內部查詢(記住,你不是執行查詢):

var innerQuery = from au in db.AppUsers 
       join u in db.Users on au.User_Id equals u.Id 
       where u.UserName == userNameVariable 
       select au.Organization_Id; 

var query = from tblXref in db.CrossReferences // or whatever 
      where innerQuery.Contains(tblXref.Organization_Id) 
      ...; 
+0

那豈不是更好地與周圍的.ToList innerQuery()? – 2013-03-09 19:20:19

+2

@LePad:絕對不是。恰恰相反。如果調用'ToList()',強制內部查詢首先執行,並將所有結果返回給客戶端 - 然後將*返回*發送到數據庫以進行第二個查詢。正如我寫的那樣,*一切*都應該在數據庫中完成,只需一次查詢。 – 2013-03-09 19:25:15

+0

謝謝你的澄清! – 2013-03-09 19:26:29