【问题标题】:Retrieve All Children From Parent[]从父级检索所有子级[]
【发布时间】:2010-08-06 19:21:29
【问题描述】:

鉴于这个类:

public class Parent
{
  public Child[] Children {get;set;}
}

还有这个数组:

Parent[] parents;

我如何使用 Linq 或其他方法从父母数组中检索 所有 孩子?这似乎很糟糕:

IList<Child> children = new List<Child>();
foreach(var parent in parents)
  children.AddRange(parent.Children);

或者这不是那么糟糕吗? :-)

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    试试这个:

    parents.SelectMany(p => p.Children).ToArray()
    

    【讨论】:

    • Bingo Bango,SelectMany 是 linq 最实用的部分之一。
    • 他想要一个列表。你需要有一个 List.AddRange(parents.SelectMany...)
    • @Joel Etherton: 或者只是 .ToList() 而不是 .ToArray() :)
    • @JimmyHoffa:ToList 更耗时,这就是为什么我更喜欢 ToArray
    • @JimmyHoffa:我只想恢复我所说的话。我学得更好,我喜欢分享这个。见这里stackoverflow.com/questions/1105990/… 所以最好在假设情况之前先分析一下。
    【解决方案2】:

    我认为您在问题中提出的解决方案并不坏。它可读性很强,很容易理解发生了什么。除非你有什么理由需要优化它,否则我看不出有什么问题。

    如果你只是真的想使用 Linq,那就另当别论了(在我看来,这是完全正确的——使用 Linq 的经验/实践越多越好)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2011-10-12
      • 1970-01-01
      相关资源
      最近更新 更多