Здравствуйте, Silver10, Вы писали:
S>При выполнении следующего кода возникает ошибка: An expression tree may not contain a dynamic operation
S>то все работает. Почему?
та все ж написано в сообщении об ошибке. ExpressionTree (то есть тип Expression<...>) способно закодировать только ограниченный набор выражений. Причем компилятор си-шарпа неявно может преобразовать ещё меньший набор выражений (например в принципе циклы можно закодировать в exression-tree , но такой код Exression<Action<int []>> extp = arr => for(var = 0; i<arr.length; i++) {} — компилер не пропустит, нужно формировать дерево руками, вызывая методы класса Expression)
Операции с dynamic — в набор допустимых выражений не входят, отсюда и ошибка. Правда не в курсе, это ограничение деревьев или же компилера.