C# 如何使用LINQ从列表中的列表中获取所有对象

C# 如何使用LINQ从列表中的列表中获取所有对象,c#,linq,C#,Linq,我有一份汽车清单,他们有一份生产工厂的清单 List<Car> cars = new List(); 现在我在这个列表中列出了每辆车的生产工厂 List<FactoryCollection> factoryCollections = cars .Select(c => c.Factories) .ToList(); 现在我想得到一个单一工厂的列表,这样我就有了所有生产特定汽车的工厂 例如: List<Factory> factorie

我有一份汽车清单,他们有一份生产工厂的清单

List<Car> cars = new List();
现在我在这个列表中列出了每辆车的生产工厂

List<FactoryCollection> factoryCollections = cars
    .Select(c => c.Factories)
    .ToList();
现在我想得到一个单一工厂的列表,这样我就有了所有生产特定汽车的工厂

例如:

List<Factory> factories = factoryCollections
    .Select(f => f.Werk);
我的问题是,这些对象更深一层

我的问题是:

如何使用LINQ语句获取对象,或者是否有更简单的方法获取所有工厂?

使用SelectMany而不是Select

使用SelectMany而不是Select


看起来,您正在寻找许多:


看起来,您正在寻找许多:

您正在寻找SelectMany,但与其他答案不同,它有点嵌套:

List<Factory> factories = cars
    .SelectMany(c => c.Factories.Select(f => f.Werk)) 
    .ToList();
您正在寻找SelectMany,但与其他答案不同,它有点嵌套:

List<Factory> factories = cars
    .SelectMany(c => c.Factories.Select(f => f.Werk)) 
    .ToList();

您可以使用SelectMany展平层次结构。您可以使用SelectMany展平层次结构。
List<Factory> factories = cars
    .SelectMany(c => c.Factories.Select(f => f.Werk)) 
    .ToList();