Я хочу подтвердить свое предположение, что LINQ Expression API не имеет средств для создания выражения, которое представляет собой создание локальной переменной.Предоставляет ли LINQ Expression API никакого способа создания переменной?
Другими словами, вы не можете создать выражение для представления:
int local;
поскольку это объявление переменной заявление и API не поддерживает выписки лямбды. Единственное состояние, в котором выражение lambda, представленное API выражения LINQ (а не экземпляр делегата), может работать с параметрами, которые он получает, и захваченными переменными, которые он получает через закрытие.
Является ли мое предположение (основанное на нескольких месяцах практики API выражения LINQ) правильным?
Вы имеете в виду, если деревья выражения .NET поддерживают объявления внутри выражения? Так, например, если вы попробуете 'System.Linq.Expressions.Expression expr =() => {int local; }; '(попытайтесь построить дерево выражений из C# lambda), вы получите ошибку _error CS0834: выражение lambda с телом оператора не может быть преобразовано в дерево выражений_. Поэтому он не поддерживается для стрелок C# лямбда, по крайней мере. –