我想定义一些lambda表达式来表示类实例属性的更新。
我试着写如下:
Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)
但是我有一个编译错误:
错误CS0832表达式树可能不包含赋值运算符。
如何用lambda表示此更新。
编辑
我的目标是使业务服务将更新发送到通用存储库。该存储库可以分析lambda的表达式以构建查询以发送到数据库引擎。
商业服务的示例可以是:
Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)
我想定义一些lambda表达式来表示类实例属性的更新。
您不能总是得到想要的东西。
我们设计表达式树lambda表达式来表示非变异操作,所以使用=
,+=
,++
等在一个表达式树的λ是非法的。
如何用lambda表示此更新?
委托lambda不受此限制;你可以说
Action<User> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)
您能否说说为什么需要这个?可能会有更好的方法来实现您的目标。 您可能会问一个XY问题。这是一个问题,您有一个问题,您有一个不好的解决方案,现在您要问的是有关不好的解决方案的问题,而不是问题。您要解决的问题是什么?