C#中的强制转换表达式
本文关键字:转换 表达式 | 更新日期: 2023-09-27 17:58:57
我有以下表达式
System.Linq.Expressions.Expression<Func<IUserFile, bool>> filter
我想将其转换为(IUserFile到UserFile)
System.Linq.Expressions.Expression<Func<UserFile, bool>> filter
我该怎么做?
不能将第一个强制转换为第二个,因为Expression<Func<IUserFile, bool>>
与Expression<Func<UserFile, bool>>
是不同的类型。
但你可以把它包装起来:
Expression<Func<UserFile, bool>> userFileFilter =
userFile => filter.Compile()(userFile);
在LINQPad中使用以下示例进行了测试:http://pastebin.com/R6xz4chH
如果第一个表达式没有改变,你也可以"预编译"它:
var filterComplied = filter.Compile();
Expression<Func<UserFile, bool>> userFileFilter =
userFile => filterCompiled(userFile);