2011-08-08 22 views
11

içindeki C# ifadesini değerlendirin: f.Compile() SQL bilinmeyen olduğu için LINQ to SQL gönderilen zamanBaşka birinde bir ifade kullanmak istiyorum başka ifade

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

Bu işe yaramaz.

y değişkeni üzerinde f ifadesini derlemeden nasıl değerlendiriyorsunuz, ancak yine de g tanımlamak için normal sözdizimini kullanıyorsunuz?

Bazı/Expression.Multiply vb. Ifadelerle g tümünü tanımlamak istemiyorum.

Teşekkürler.

cevap

3

Calling functions in LINQ queries ve LINQ Extensions projesine bir göz atın. CLinq kısmı sorunuzla alakasızdır, fakat aynı zamanda aradığınız şey olan LinqExt kütüphanesini de içerir. Aynı yaklaşım aynı zamanda Linq için başka faydalı uzantılar da sağlayan LinqKit tarafından da kullanılır.

+0

+1 Çok ilginç makaleler. –

+0

Çok teşekkürler, verdiğiniz bağlantıdan LinqKit'i indirdim ve "Invoke" ve "AsExpandable" ile mükemmel çalışıyor. Katılıyorum, çok ilginç makaleler. – SemMike