İfade Func
Func<MyClass, bool> func = x=>Id == 5;
ben dönüştürebilirsiniz nasıl
Expression<Func<MyClass, bool>>
İfade Func
Func<MyClass, bool> func = x=>Id == 5;
ben dönüştürebilirsiniz nasıl
Expression<Func<MyClass, bool>>
bu deneyin:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
Bu, "exp" öğesinin bir "MyClass" alan ve bir "bool" döndüren bir temsilci çağrısı olmasını ayarlar. expr, gerçek lambda için bir sözdizimi ağacı tutmaz. – Sean
Evet, öyle. Ne olmuş yani? Belki de sorunun yazarı sadece bu olmalı. – Memoizer
Bu yanıt kabul edilmemelidir. Yöntem ne olursa olsun ifadeye dönüştürülmez. –
Oluşturduğunuz temsilci için çağrıyı temsil eden bir ifade oluşturabilirsiniz. Ancak çoğu zaman, Expression
s kullanırken, kodun ne yaptığını anlamak için bunu yaparsınız (ör. SQL'e dönüştürmek için). Ve bunu opak bir işlevi çağırmak için bir ifade ile yapamazsınız.
sadece yazabilirsiniz:
Expression<Func<MyClass,bool>> expr = x=>Id == 5;
Bu Id == 5
için bir ifade ağacı olmak expr
ayarlayacaktır.
Bunu yaparsanız:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
O zaman bu func
bir çağrı için bir ifade ağacı olmak expr
ayarlayacaktır, func
gövdesi için değil bir ifade ağacı.
İfade bir Lambda işlevinin bir Ara Temsili olduğunu. Func, derlenmiş lambda işlevinin kendisidir. İkisi arasında dönüş yapabileceğinizi düşünmeyin. Bunu neden yapmak zorundasınız? – akhisp