ich zur Zeit versucht, eineeine nicht mehr benötigte Boxen aus aC# Ausdruck konvertieren Entfernen
Expression<Func<T,object>>
zu einem
Expression<Func<T,bool>>
Zeit die Uhr zeigt mir, dass mein Ausdruck
hältExpression<Func<T,object>> myExpression = model=>Convert(model.IsAnAirplane)
zu konvertieren
Ich möchte dies zu
vereinfachen Ich gelingtExpression<Func<T,bool>> myExpression = model=>model.IsAnAirplane
Derzeit nur bei bekehrt Zugabe, was zu:
Expression<Func<T,bool>> myExpression = model=>Convert(Convert(model.IsAnAirplane))
Aber da der zugrunde liegende Typ ein bool, sollte ich in der Lage, die Konvertiten ganz zu kratzen, nicht wahr? Ich kenne mich mit Expression-Besuchern usw. aus, kann aber immer noch nicht herausfinden, wie ich die Conversion entfernen kann.
Edit: diese akzeptierte Antwort auf diese Frage Generic unboxing of Expression<Func<T, object>> to Expression<Func<T, TResult>> (das könnte ein mögliches Duplikat sein) funktioniert nicht für mich ... wie der Ausdruck von EF übersetzt wird, können Sie sehen, es tut Convert (Convert()) statt Wenn nur die erste Konvertierung ... entfernt wird, führt dies dazu, dass der Typ "System.Boolean" nicht in den Typ "System.Object" umgewandelt werden kann. LINQ to Entities unterstützt nur das Generieren von EDM-Primitiven oder Aufzählungstypen. "
Das tut genau das, was ich wollte, und funktioniert wie ein Charme, danke! –
Danke, das hat mir wirklich den Hintern gerettet –