0

我正在尝试使用 id = users101 访问集合中的用户对象并将其设置为其他用户。

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

提前致谢。

4

2 回答 2

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()and中执行双重搜索IndexOf())。

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

于 2012-05-30T12:24:14.487 回答
-1

分两行试试:

var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();
于 2012-05-30T12:24:37.310 回答