Werten Sie den C # -Ausdruck in einem anderen Ausdruck aus

c# expression-trees linq-to-sql

Frage

Ich möchte einen Ausdruck in einem anderen verwenden:

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);

Dies funktioniert nicht, wenn es an LINQ to SQL gesendet wird, da f.Compile () für SQL unbekannt ist.

Wie bewerten Sie den Ausdruck f auf der Variablen y ohne ihn zu kompilieren, aber dennoch die normale Syntax zu verwenden, um g zu definieren?

Ich möchte nicht alle von g mit einigen unlesbaren Expression.Add / Expression.Multiply usw. Anweisungen definieren müssen.

Vielen Dank.

Akzeptierte Antwort

Weitere Informationen finden Sie unter Funktionen in LINQ-Abfragen und LINQ-Erweiterungen aufrufen. CLinq Teil ist für Ihre Frage nicht relevant, aber es enthält auch LinqExt-Bibliothek, die genau das ist, was Sie suchen. Der gleiche Ansatz wird auch von LinqKit verwendet, das auch andere nützliche Erweiterungen für Linq bietet.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow