代码之家  ›  专栏  ›  技术社区  ›  Erik Funkenbusch

如何获取数组成员的数组

  •  0
  • Erik Funkenbusch  · 技术社区  · 14 年前

    假设我有课

    public class Foo
    {
        public Bar Bar { get; set; }
    }
    

    public class Gloop
    {
        public List<Foo> Foos { get; set; }
    }
    

    List<Bar> 酒吧?

    我使用的是C#4.0,如果这是最好的选择,我可以使用Linq。

    更新:

    public class Service
    {
        public ServiceBase InnerService { get; set; }
    }
    
    public class ServiceHost
    {
        private List<Service> services = new List<Service>();
        static void Main()
        {
             // code to add services to the list
             ServiceBase.Run(services.Select(service => service.InnerService).ToArray());
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Jon Skeet    14 年前

    这个很简单,如果我理解正确的话:

    List<Foo> foos = gloop.Foos; // Or wherever you're getting it from
    List<Bar> bars = foos.Select(foo => foo.Bar)
                         .ToList();
    

    如果你只需要一个 IEnumerable<Bar> 你可以用 Select ToList . 你当然不需要 foos 局部变量,如果你不需要它-你可以有一个单一的语句。我只是把它们分开,以防你有一个现有的 List<Foo> Foo[] (您在主题行中提到数组)。

        2
  •  1
  •   carlmon    14 年前

    var bars = gloop.Foos.Select(foo => foo.Bar);