Évaluer l'expression C # dans une autre expression

c# expression-trees linq-to-sql

Question

Je veux utiliser une expression dans une autre:

Expression<Func<double, double>> f = x => x * x * 27 + blah ... expression with x;

Expression<Func<double, double>> g = y => 3 + 8 * f.Compile()(y) * y * blah... expression with y and f(y);

Cela ne fonctionnera pas lorsqu’il sera envoyé à LINQ to SQL car f.Compile () est inconnu de SQL.

Comment évaluez-vous l'expression f sur la variable y sans la compiler, mais en utilisant toujours la syntaxe normale pour définir g ?

Je ne veux pas avoir à définir tout g avec des instructions Expression.Add / Expression.Multiply etc. illisibles.

Merci.

Réponse acceptée

Examinez les fonctions d’appel dans les requêtes LINQ et le projet LINQ Extensions . La partie CLinq n’est pas pertinente pour votre question, mais elle inclut également la bibliothèque LinqExt, qui correspond exactement à votre recherche. La même approche est également utilisée par LinqKit, qui fournit également d’autres extensions utiles pour Linq.



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