【发布时间】:2016-02-18 14:53:57
【问题描述】:
我目前正在尝试转换
Expression<Func<T,object>>
到一个
Expression<Func<T,bool>>
目前手表显示我的表情保持不变
Expression<Func<T,object>> myExpression = model=>Convert(model.IsAnAirplane)
我想把它简化为
Expression<Func<T,bool>> myExpression = model=>model.IsAnAirplane
目前我只成功添加了一个转换,导致:
Expression<Func<T,bool>> myExpression = model=>Convert(Convert(model.IsAnAirplane))
但由于底层类型是布尔型,我应该能够完全从头开始转换,对吧?我对表达式访问者等很熟悉,但仍然不知道如何删除转换。
编辑:这个问题的公认答案Generic unboxing of Expression<Func<T, object>> to Expression<Func<T, TResult>>(可能是重复的)对我不起作用......因为表达式被 EF 翻译,你可以看到它确实 Convert(Convert())而不是仅仅删除第一个转换...,这会导致“无法将类型 'System.Boolean' 转换为类型 'System.Object'。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。”
【问题讨论】:
标签: c# lambda expression boxing unboxing