J'essaye de construire un arbre d'expression (still) mais en allant plus loin! J'ai besoin de créer un BinaryExpression
pour effectuer une comparaison 'In' entre un membre et une collection d'éléments. Par conséquent, l'expression doit renvoyer true si le membre est contenu dans les éléments.Expression binaire Expression Tree pour une opération 'In'
Cela ne signifie évidemment existe pas:
Expression.MakeBinary(ExpressionType.In, memberExpression, constantExpression);
constantExpression
est un ConstantExpression
de type IEnumerable<T>
alors memberExpression
est un MemberExpression
de type T
.
Comment créer une telle expression?
C'était ma première pensée mais je suis un peu perdu sur la façon de traduire une telle requête LINQ dans un arbre d'expression. –
@Adam: La chose la plus facile à faire est de l'essayer :) Créez une expression, puis utilisez Reflector pour voir ce que fait le compilateur. Fondamentalement, il y aura un appel à Queryable.Where, avec une expression qui représente un appel à 'Contains' sur une constante (ici la collection' specialUsers') en passant l'évalué 'user.Name' comme argument. –
N'a pas réalisé que LINQ compilé de cette façon. Cela devrait me faire gagner du temps. Merci! –