我正在尝试使用 id = users101 访问集合中的用户对象并将其设置为其他用户。
Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();
提前致谢。
我正在尝试使用 id = users101 访问集合中的用户对象并将其设置为其他用户。
Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();
提前致谢。
你不能用一个 LINQ 表达式来做到这一点。
通常 LINQ 扩展适用于可枚举,如果MyObject
是一个集合,您首先必须找到所需的项目,然后用新对象覆盖它(此外SingleOrDefault()
,如果条件不满足,将简单地返回 null)。
你应该写这样的东西(确切的代码取决于是什么MyObject
):
var item = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
if (item != null)
Controller.MyObject[Controller.MyObject.IndexOf(item)] = new OtherUser();
请注意,如果您真的不需要执行的检查,SingleOrDefault()
您可以简化代码(并避免在SingleOrDefault()
and中执行双重搜索IndexOf()
)。
如果这是“性能关键”,那么编写一个一次性完成此任务的临时实现可能会更好。
分两行试试:
var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();