一个 lambda 表达式中的多个赋值操作

本文关键字:赋值 操作 lambda 表达式 一个 | 更新日期: 2023-09-27 18:33:28

我正在尝试创建一个动态lambda表达式(从文本解析(,该表达式执行多个赋值。创建单个作业相当容易,但是我坚持如何组合它们。所以我要实现的目标与

Action<Entity> action = (entity) => 
{ 
    entity.Property1 = "1"; 
    entity.Property2 = "2";
};

有没有办法将多个表达式.赋值表达式合并为一个(因为 Expression.Lambda 只接受一个表达式作为输入(?

--编辑:所以为了澄清起见,我写的代码只是伪代码,所以拼写错误(现已更正(不会改变任何东西。我现在的代码是这样的:

Expression parameter = Expression.Parameter(typeof(Entity), "param");
Expression firstProperty = Expression.Property(parameter, "Property1");
Expression first = Expression.Assign(firstProperty, "1");
Expression secondProperty = Expression.Property(parameter, "Property2");
Expression second = Expression.Assign(secondProperty, "2");
Expression final = [INSERT MAGIC HERE]
Action<Entity> action = Expression.Lambda<Action<Entity>>(final, entity).Complie();

请注意,属性名称实际上来自文本输入,并且 assigment 表达式的数量不限于 2,它仅用于演示目的。我的问题是,是否有一个表达式可以让我组合同化表达式,或者我必须为每个表达式创建不同的 lambda?

一个 lambda 表达式中的多个赋值操作

试试这个魔法:

Expression.Block(first, second);