姬長信(Redy)

LINQ查询什么时候去数据库?


我担心,当我真正想要的只是嵌套选择语句的SQL等效项时,此LINQ调用实际上会两次访问数据库(一次是Contains,一次是ToList):

var query1 = from y in e.cities where y.zip=12345 select y.Id;
var query2 = from x in e.users where query1.Contains(x.cityId) select x;
List result = query2.ToList();

重点是:如果这是两次访问数据库,该如何避免呢?我如何拥有这样的嵌套选择语句,该语句仅一次执行一次查询? Query1只会返回1或0行.必须有比使用“包含”更好的方法.