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

我该怎么做?

C#中的强制转换表达式

不能将第一个强制转换为第二个,因为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);