Combinaison de Func expressions

c# expression-trees

Question

Dupliquer possible:
Combinaison de deux expressions (Expression <Func <T, bool >>)

J'ai une méthode prenant en un seul paramètre Expression<Func<bool>>

void MethodOne(Expression<Func<bool>> expression)

J'ai plusieurs instances de Expression<Func<bool>> . Comment combiner dynamiquement ces expressions en une seule Expression<Func<bool>> aide de Expression.OrElse (c'est-à-dire la construction d'un arbre d'expression)?

Par exemple si j'ai deux expressions telles que

() => objectA.PropertyOneIsSet

et

() => objectB.PropertyTwoIsSet

Je veux que le résultat final soit:

() => objectA.PropertyOneIsSet || objectB.PropertyTwoIsSet

afin que je puisse passer cela à ma méthode ci-dessus.

Réponse acceptée

Vous pouvez créer ExpressionVisitor pour combiner des requêtes. Consultez ce blog msdn pour plus d’informations: Combinaison de prédicats (réponse 3). Il parle de EF, mais vous pouvez l'utiliser dans votre cas


Réponse populaire

Vous pouvez utiliser expressions.Any (x => x.CallMethod) pour atteindre cet objectif.



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