Я читаю этот вопрос, который объясняет, что порядок методов LINQ для объектов имеет значение. Мой вопрос: почему?
Если я пишу запрос LINQ to SQL, не имеет значения порядок методов LINQ - projections
, например:
session.Query<Person>().OrderBy(x => x.Id)
.Where(x => x.Name == "gdoron")
.ToList();
Дерево выражений будет преобразовано в рациональный SQL следующим образом:
SELECT *
FROM Persons
WHERE Name = 'gdoron'
ORDER BY Id;
Когда я запустил запрос, SQL-запрос будет построен в соответствии с деревом выражений независимо от того, насколько странно порядок методов.
Почему это не работает с LINQ to objects
?
когда я перечисляю IQueryable, все проекции могут быть размещены в рациональном порядке (например, Order By after Where), как это делает оптимизатор базы данных.