Предположим, мы имеем следующий LINQ запрос:Когда запрос 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 });
Тогда я coud использовать запрос следующим образом:
foreach (var name_city_pair in query) ...
Вопросы являются:
Похоже, данные, указанные в запросе , уже запрошены , когда я использую цикл foreach. Итак, когда происходит это действие запроса? Это когда я определяю объект запроса LINQ
IEnumerable<Customer>
?Если номер данных слишком большой, есть ли какой-либо поздний запрос механизм? (Я не уверен, что правильное слово, чтобы описать это, но я надеюсь, что вы меня.)
Я думаю, что у вас может быть несколько синтаксических ошибок выше. Вы выбираете анонимный тип, а затем указываете, что выбранный объект имеет тип Customer, а затем итерации по запросу, как IEnumerable. –
vossad01
Спасибо за ваше напоминание. Исправлено сейчас. – smwikipedia