Из глубины C #:
Не все лямбда-выражения можно преобразовать в деревья выражений.Вы не можете преобразовать лямбду с блоком операторов (даже с одним оператором возврата) в дерево выражений -> оно должно быть в форме, которая просто оценивает одно выражение.
Так какОператоры Linq-to-Object не преобразуются в объекты дерева выражений, лямбда-выражения, используемые с операторами Linq-to-Object, могут содержать блок операторов
string[] count = { "one ", "two ", "three ", "four ", "five ", "six " };
IEnumerable<int> result = count.Select(item =>
{
Console.WriteLine(item);
return item.Length;
});
foreach (int i in result);
OUTPUT:
one two three four five six
Я еще не начал изучать Linq-To-Sql или Linq-To-Entities, но я предполагаю, что лямбда-выражения, используемые в операторах LINQ, которые работают с IQueryable<T>
, могут содержать только одно выражение из-за переопределения, которое толькоодно выражение может быть преобразовано в дерево выражений?
Спасибо