2010-07-01 41 views
5

için sabit tanıtarak ben ilk T değiştirerek Expression<Func<T2, bool>> biçimine bir ifadesi haline dönüştürmek gerekir Expression<Func<T, T2, bool>> formatında bir ifade var sabit bir değerle ifade.dönüştürme İfade İfade için <Func <T, T2, bool>><Func <T2, bool>> T

Bir ifade olarak kalmak için buna ihtiyacım var, bu yüzden ifadeyi ilk parametre olarak sabit bir şekilde çağırmam.

İfade ağaçlarıyla ilgili diğer sorulara burada baktım ama sorunuma gerçekten bir çözüm bulamıyorum. Sanırım sabitlemeyi tanıtmak ve bir parametreyi kaldırmak için ifade ağacında yürümem gerektiğinden şüpheleniyorum ama şu an nerede başlayacağımı bile bilmiyorum. :(

cevap

4

diğer çağıran yeni bir lambda ifadesi oluşturmak için Expression.Invoke kullanabilirsiniz:. Büyü gibi

static Expression<Func<T2, bool>> PartialApply<T, T2>(Expression<Func<T, T2, bool>> expr, T c) 
{ 
    var param = Expression.Parameter(typeof(T2), null); 
    return Expression.Lambda<Func<T2, bool>>(
     Expression.Invoke(expr, Expression.Constant(c), param), 
     param); 
} 
+0

Çalışır ve tüm ifadesini üç yürüyen çok daha kolaydır teşekkür ederiz. –

İlgili konular