假设我们有以下 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 循环时,查询指定的数据似乎已经被查询出来。那么这个查询动作是什么时候发生的呢?是在我定义 LINQ 查询对象的时候
IEnumerable<Customer>
吗?如果数据量太大,有没有后期查询 机制?(我不确定描述这一点的正确词,但我希望你能理解我。)