Attualmente sto cercando di convertire unRimozione di una boxe non necessario convertire da ca # espressione
Expression<Func<T,object>>
a un
Expression<Func<T,bool>>
Attualmente l'orologio mi dimostra che la mia espressione detiene
Expression<Func<T,object>> myExpression = model=>Convert(model.IsAnAirplane)
Mi piacerebbe semplificarlo a
Expression<Func<T,bool>> myExpression = model=>model.IsAnAirplane
Attualmente mi riescono solo ad aggiungere un convertito, con conseguente:
Expression<Func<T,bool>> myExpression = model=>Convert(Convert(model.IsAnAirplane))
Ma dal momento che il tipo di fondo è un bool, dovrei essere in grado di graffiare i convertiti del tutto, giusto? Ho familiarità con i visitatori di espressioni, ecc, ma non riesco ancora a capire come rimuovere la conversione.
Modifica: questa risposta accettata a questa domanda Generic unboxing of Expression<Func<T, object>> to Expression<Func<T, TResult>> (che potrebbe essere un possibile duplicato) non funziona per me ... poiché l'espressione viene tradotta da EF, è possibile vederlo invece Converti (Convert()) semplicemente rimuovendo la prima conversione ..., questo risulta in "Impossibile eseguire il cast del tipo 'System.Boolean' per digitare 'System.Object'. LINQ to Entities supporta solo il casting di tipi primitivi o di enumerazione EDM."
Questo fa esattamente quello che volevo e funziona come un incantesimo, grazie! –
Grazie, questo mi ha davvero salvato il sedere –