从对象列表中返回成员 IEnumerable 的串联集



我有节点对象

public class Node {
 private Boolean isStart;
 private IEnumerable<int> memberIds;
}

在 IEnumerable IEnumerable<Node>

并希望获取节点所在的所有成员 id,isStart=true;

我目前的答案是:

public IEnumerable<int> GetStartingMembers(IEnumerable<node> nodeList) {
  IEnumerable<Node> startingNodes = nodeList.Where(n.isStartingNode == true);
  IEnumerable<int> startingMembers = new List<int>();
  foreach (var node in startingNodes) {
     startingMembers = startingMembers.Concat(node.memberIds);
  }
}

但这似乎太麻烦了——必须有更好的方法——有什么想法吗?

尝试

IEnumerable<int> startingMembers = nodeList.Where(n => n.isStartingNode)
    .SelectMany(x => x.memberIds)
    .ToList();

参考: 选择许多

首先,您的代码示例无法编译:错误的成员名称、错误的类名、错误的访问修饰符。但是,如果我们更改所有这些以编译您的代码,则减少到:

public IEnumerable<int> GetStartingMembers(IEnumerable<Node> nodeList) 
    => nodeList.Where(n => n.isStart == true).SelectMany(n => n.memberIds);
public class Node
{
    public Boolean isStart;
    public IEnumerable<int> memberIds;
}

最新更新