Voglio usare un'espressione in un altro:
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);
Questo non funzionerà se inviato a LINQ to SQL perché f.Compile () è sconosciuto a SQL.
Come valuti l'espressione f
sulla variabile y
senza compilarla, ma continui ad usare la sintassi normale per definire g
?
Non voglio dover definire tutto g
con alcune Expression.Add
illeggibili di Expression.Add
/ Expression.Multiply
etc.
Grazie.
Dai un'occhiata alle funzioni di chiamata nelle query LINQ e nel progetto LINQ Extensions . La parte CLinq è irrilevante per la tua domanda, ma include anche la libreria LinqExt, che è proprio quello che stai cercando. Lo stesso approccio è anche usato da LinqKit che fornisce anche altre utili estensioni per Linq.