我想定义一些 lambda 表达式来表示类实例属性的更新。
我尝试写如下:
Expression<Action<User>> update = user => user.Name = "Joe Foo";
但我有一个编译错误:
错误CS0832
表达式树不能包含赋值运算符。
如何用 lambda 表示此更新。
EDIT
我的目标是让业务服务将更新发送到通用存储库。该存储库可以分析 lambda 表达式以构建发送到数据库引擎的查询。
商业服务的一个示例可以是:
public void DoStuff(String userId, ...)
{
// Business logic here
// ...
// Persist updates determined above
this.repository.Update(
// First parameter is the filter of entities to updates
x => x.Id == userId,
// Next parameters are updates to apply
x => x.FirstName = "John",
x => x.LastName = "Foo",
...);
}
我想定义一些 lambda 表达式来表示类实例属性的更新。
你不可能总是得到你想要的。
我们设计了表达式树 lambda 来表示不变异操作,因此使用=
, +=
, ++
等等在表达式树 lambda 中都是非法的。
如何用 lambda 表示此更新?
委托 lambda 没有这样的限制;你可以说
Action<User> update = user => user.Name = "Joe Foo";
您能详细说明一下为什么需要这个吗?可能有更好的方法来实现您的目标。您可能会问 XY 问题。这是一个问题,你有一个问题,你有一个糟糕的解决方案,现在你问的是关于糟糕的解决方案而不是问题本身的问题。您想要解决的问题是什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)