通过LINQ访问集合并将单个成员设置为新对象

通过LINQ访问集合并将单个成员设置为新对象,linq,Linq,我试图访问id=to users101的集合中的用户对象,并将其设置为其他用户 Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser(); 提前感谢。一个LINQ表达式是做不到的 通常LINQ扩展在可枚举项上工作,如果MyObject是一个集合,您首先必须找到所需的项,然后用新对象覆盖它(而且SingleOrDefault()如果条件不满足,只会返回null) 您应该这样编写(确切的代码取决于MyO

我试图访问id=to users101的集合中的用户对象,并将其设置为其他用户

Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();

提前感谢。

一个LINQ表达式是做不到的

通常LINQ扩展在可枚举项上工作,如果
MyObject
是一个集合,您首先必须找到所需的项,然后用新对象覆盖它(而且
SingleOrDefault()
如果条件不满足,只会返回null)

您应该这样编写(确切的代码取决于
MyObject
是什么):

请注意,如果您确实不需要由
SingleOrDefault()
执行检查,则可以简化代码(并避免在
SingleOrDefault()
IndexOf()
中执行双重搜索)

如果这是“性能关键型”的,那么最好编写一个临时实现,一次完成这项任务。

分两行尝试:

var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();

是否要使用user101的详细信息更新其他用户deatils?如果没有,请解释你所说的“将此设置为其他用户”是什么意思。谢谢你的回复。我想我可能不得不做这样的事情,这有点不幸,但至少它起作用了。再次感谢。
var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();