Comment changer le type du paramètre dans une expression?

.net c#-3.0 expression-trees lambda linq

Question

depuis que j'utilise POCOS dans mon domaine, je veux que mon référentiel puisse recevoir des filtres d'expression du type de mon POCOS et changer le paramètre dans l'expression pour qu'il soit le type de mes tables LINQ, mes champs ont le même nom que mes membres, donc j’ai pu accomplir cela pour 1 et 2 conditions lambda en décomposant les membres et les constantes, si j’ajoutais plus de conditions, cela conduisait à analyser récursivement l’expression binaire.

Voici comment j'ai terminé, existe-t-il un moyen facile de réaliser cela?

var q = from p in 
        db.products.Where(ExpressionBuilder.Create<MyPocoProduct,LinqProduct>(myPocoProductExpression))

la façon dont je le change

var q = from p in 
        db.products.Where(ExpressionBuilder.Create<MyPocoProduct,LinqProduct>(myPocoProductExpression))

Réponse d'expert

Non, vous ne pouvez pas changer le type d'un ParameterExpression (les arbres d'expression sont immuables); pour ce faire, vous devrez reconstruire l’arbre entier. Et oui, vous devez souvent le récidiver. Pardon...




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi