LINQ использует модель отложенного исполнения, что означает, что результирующая последовательность не возвращается в момент вызова операторов Linq, но вместо этого эти операторы возвращают объект, который затем дает элементы последовательности только тогда, когда мы перечисляем этот объект.
Пока я понимаю, как работают отложенные запросы, у меня возникли проблемы с пониманием преимуществ отложенного исполнения:
1) Я читал, что отложенный запрос, выполняемый только тогда, когда вам действительно нужны результаты, может принести большую пользу. Так в чем же польза?
2) Другим преимуществом отложенных запросов является то, что если вы определяете запрос один раз, то каждый раз, когда вы перечисляете результаты, вы получите разные результаты, если данные будут изменены.
a) Но, как видно из приведенного ниже кода, мы можем добиться такого же эффекта (таким образом, каждый раз, когда мы перечисляем ресурс, мы получаем другой результат, если данные изменяются) даже без использования отложенных запросов:
List<string> sList = new List<string>( new[]{ "A","B" });
foreach (string item in sList)
Console.WriteLine(item); // Q1 outputs AB
sList.Add("C");
foreach (string item in sList)
Console.WriteLine(item); // Q2 outputs ABC
3) Существуют ли другие преимущества отсроченного исполнения?