c# - 将参数替换为表达式

标签 c# linq lambda expression

给定:

var paramA = Expression.Parameter(typeof(string), "a");

和:

Expression<Func<string, bool>> expr = b => b == "Something";

是否可以将 b 替换为 paramA 到表达式 expr 中?

最佳答案

您可以遍历 expr 的表达式树,并使用此问答中描述的方法将所有出现的 b 替换为 paramA:"Combine two lambda expressions with inner expression" .

但是,如果您只需要一个使用 paramA 作为参数的 lambda 表达式,则创建一个包装 expr 的 lambda 会更容易:

var res = (Expression<Func<string,bool>>)Expression.Lambda(
    Expression.Invoke(expr, paramA)
,   paramA
);

关于c# - 将参数替换为表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355625/

相关文章:

c# - 如何使用额外的 MVC Core 2 应用程序扩展 MVC Core 2 webapp

c# - 在 linq-to-sql 中的两个日期时间之间查询

c# - 从 C# 表达式中删除不需要的装箱转换

testing - Java 8 Lambda 的单元测试

c# - 使用 Process.Start() 打开文件夹时访问被拒绝异常

c# - Controller 上的相同类型 Action 过滤器及其 Action 方法

c# - 从通用列表中删除一个元素

c# - 向字符串添加回车符

c# - LinQ 查询从 DataTable 中选择 DataRow

c# - 将匿名表达式写成 lambda 表达式