¿Los árboles de expresión LINQ son árboles propios, como en, gráficos (dirigidos o no, la wikipedia no parece estar muy de acuerdo) sin ciclos? ¿Cuál es la raíz de un árbol de expresiones a partir de la siguiente expresión C#?¿Los árboles de expresión LINQ son árboles apropiados?
árbol(string s) => s.Length
La expresión se parece a esto, con "->" indica el nombre de la propiedad del nodo al otro nodo es accesible a través.
->Parameters[0]
Lambda---------Parameter(string s)
\ /
\->Body /->Expression
\ /
Member(Length)
Al utilizar ExpressionVisitor para visitar LambdaExpression, el parámetro ParameterExpression se visita dos veces. ¿Hay alguna manera de usar ExpressionVisitor para visitar LambdaExpression de manera que todos los nodos se visiten exactamente una vez, y en un orden específico y conocido (preorden, en orden, pedido posterior, etc.)?
¿Por qué lo necesitas? ¿Por qué te importa? –
@DanielHilgarth Creo que esta es una pregunta legítima sobre cómo funcionan los conceptos subyacentes de Expression Trees. Este es un sitio de preguntas y respuestas, y parece que la persona que pregunta tiene curiosidad sobre cómo funcionan los árboles de expresión. –
Puede ser que esta pregunta sea para las encuestas, pero es interesante. –