【发布时间】:2011-10-29 21:39:29
【问题描述】:
我担心这个 LINQ 调用实际上会两次访问数据库(一次用于 Contains,一次用于 ToList),而我真正想要的是嵌套 select 语句的 SQL 等效项:
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<users> result = query2.ToList();
重点:如果这是两次访问数据库,我该如何避免呢?我怎样才能有一个像这样的嵌套选择语句,它一次只作为一个查询执行? Query1 只会返回 1 或 0 行。一定有比使用“包含”更好的方法。
【问题讨论】:
-
简单的方法:观察连接。如果是 LINQ-to-SQL,则 hook
ctx.Log = ...,或者 SQL profiler 工作,或者 mvc-mini-profiler 等
标签: c# sql linq select ado.net