2011-08-08 12 views
11

chcę użyć wyrażenia w inny:Ocenić C# wyrażenie wewnątrz innego wyrazu

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

To nie zadziała, gdy wysłany do LINQ to SQL, ponieważ f.Compile() jest nieznany SQL.

Jak oceniasz wyrażenie f na zmiennej y bez kompilowania go, ale nadal używasz normalnej składni do zdefiniowania g?

Nie chcę, aby zdefiniować wszystkie g z niektórymi nieczytelnymi oświadczeniami itp. Expression.Add/Expression.Multiply.

Dzięki.

Odpowiedz

3

Spójrz na projekt Calling functions in LINQ queries i LINQ Extensions. Część CLinq jest nieistotna dla twojego pytania, ale zawiera także bibliotekę LinqExt, której właśnie szukasz. To samo podejście jest również używane przez LinqKit, która zapewnia również inne przydatne rozszerzenia dla Linq.

+0

+1 Bardzo ciekawe artykuły. –

+0

Wielkie dzięki, ściągnąłem LinqKit z linku, który podałeś i działa idealnie z 'Invoke' i' AsExpandable'. Zgadzam się, bardzo ciekawe artykuły. – SemMike

Powiązane problemy