假设我们有以下 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>吗?
- 如果数据量太大,有没有后期查询 机制?(我不确定描述这一点的正确词,但我希望你能理解我。)