【发布时间】:2012-08-26 11:48:58
【问题描述】:
假设我们有以下 LINQ 查询:
var query =
from c in Customers
where c.Country == "Italy"
orderby c.Name
select new { c.Name, c.City };
编译器会这样转换:
IEnumerable<Customer> query =
Customers
.Where( c => c.Country == "Italy" );
.OrderBy( c => c.Name )
.Select( c => new { c.Name, c.City } );
然后我可以使用这样的查询:
foreach ( var name_city_pair in query ) ...
问题是:
查询指定的数据好像已经被查询出来了 当我使用 foreach 循环时。那么这个查询动作是什么时候发生的呢? 当我定义
IEnumerable<Customer>的LINQ查询对象时 ?如果数据量太大,是否有延迟查询 机制? (我不确定描述这个的正确词,但是 我希望你能得到我。)
【问题讨论】:
-
我想你上面可能有一些语法错误。您正在选择 Anonymous 类型,然后说所选对象的类型为 Customer,然后像 IEnumerable
. 一样遍历查询 -
感谢您的提醒。现已更正。
标签: linq