我正在尝试使用id = to users101访问集合中的用户对象,并将其设置为其他用户。
Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();
提前致谢。
答案 0 :(得分:1)
使用一个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()
和IndexOf()
中执行双重搜索。)
如果这是“性能关键”,那么编写一个可以一次完成此任务的临时实现更好。
答案 1 :(得分:-1)
尝试两行:
var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();