2013-03-09 93 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