我有一个List<MyObject>
MyObject
如下。
public class MyObject
{
public bool available;
public bool online;
}
现在,当我List<MyObject>
从另一个函数中检索它时,只available
设置了该字段。现在我想设置online
每个MyObject
.
我目前做的是
List<MyObject> objectList = getMyObjectList();
objectList.ForEach(x => x.online = IsOnline(x));
现在该online
属性已设置,我想再次使用Where
以选择MyObject
既可用又在线的过滤器。
objectList.Where(x => x.available && x.online);
虽然我知道上面的代码是有效且可读的,但我很想知道是否有一种LINQ方法可以选择相同的对象但初始化了一个变量,这样我就可以将所有三行合并为一行。不幸ForEach
的是没有返回列表。
就像是
getMyObjectList().BetterForEach(x => x.online = IsOnline(x)).Where(x => x.available && x.online);
BetterForEach
将返回x
之前设置的值以及设置的online
字段。
有什么方法可以使用 LINQ 实现这一点吗?
更新
我已经删除了 MyObject 的其他字段。MyObject 不仅包含这些字段,还包含更多字段。我宁愿不创建 MyObject 的新实例。