Во время компиляции операторы LINQ, которые работают с IQueryable<T>
(таким образом, операторы Linq-to-SQL и Linq-to-Entities), преобразуются в объекты дерева выражений, которые представляют код как данные.
a) Переводятся ли операторы LINQ, которые работают на IEnumerable<T>
(таким образом, LINQ-to-Objects), в деревья выражений?
b) Если нет, что происходит с операторами LINQ-to-Object во время компиляции? Компилятор просто переводит их в соответствующие вызовы методов? Например, следующий оператор Linq-to-Objects:
var results = collection.Select(item => item.id).Where(id => id > 10);
переведено компилятором в нечто похожее на следующее:
var results = Enumerable.Where(
Enumerable.Select(collection, item => item.id),
id => id > 10
);
спасибо