3 Stimmen

Konvertieren Sie Expression<Func<TModel, Boolean?>> in Expression<Func<TModel, Boolean>>

Eine Methode in ASP.NET MVC erwartet einen Ausdruck Expression> (zeigt ein Kontrollkästchen HTML-Steuerung auf dem Bildschirm), aber meine Elemente sind Boolean?.

In unserem Fall, für diese spezifische Situation, ist null dasselbe wie false, ein nicht angekreuztes HTML-Kontrollkästchen muss angezeigt werden.

Wie kann ich von Expression> zu Expression> konvertieren, indem ich etwas wie value = nullableValue.HasValue && nullableValue.Value hinzufüge?

Vergiss nicht, dass das resultierende Expression immer noch eine MemberExpression sein muss, was mich fragen lässt, ob das überhaupt möglich ist.

Prost.

1voto

Maciej Jastrzebski Punkte 3457

Wenn Sie auf eine Wert Eigenschaft zugreifen (wie int, bool, usw.), erhalten Sie nicht MemberExpression, sondern UnaryExpression, da der zugrunde liegende MemberExpression in einem UnaryExpression verschachtelt ist, der für die Durchführung der Convert Operation verantwortlich ist.

Dies scheint darauf zurückzuführen zu sein, dass Werttypen keine Verweistypen sind und keinen null Wert akzeptieren.

Wenn Sie akzeptieren, UnaryExpression zu erhalten, können Sie dies folgendermaßen tun:

Expression> quelle = ...

var resultBody = Expression.Convert(quelle.Body, typeof(Boolean));    
var result = Expression.Lambda>(resultBody, quelle.Parameters);

Ein stackoverflow Frage die Ihnen hilfreich sein könnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X