如何获取数组成员的数组

时间:2010-06-10 06:07:16

标签: linq c#-4.0

假设我有一个班级

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

然后我有另一个班级

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

获取List<Bar> Foo.Bars的最简单方法是什么?

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

更新:

仅仅为了一点点实际,原因是我有一个Windows Service类,它包含一个内部ServiceBase派生类作为属性。所以我最终得到这样的代码:

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 个答案:

答案 0 :(得分:2)

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

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[](你在主题行中提到了数组)。

答案 1 :(得分:1)

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