2016-04-28 65 views
1

我有一個汽車列表,並且他們的生產工廠中有一個列表。如何從LINQ列表中獲取列表中的所有對象

List<Car> cars = new List(); 

現在我已經在這個列表中的每個車都在生產的Factorys。

List<FactoryCollection> factoryCollections = cars 
    .Select(c => c.Factories) 
    .ToList(); 

,現在我想獲得一個列表與單個工廠,所以我根本其中,具體的汽車在所有生產工廠。

例如:

List<Factory> factories = factoryCollections 
    .Select(f => f.Werk); 

我的問題是,對象是更深一層。

我的問題是:

如何獲得對象與LINQ說法還是有一個更簡單的方法來對所有的工廠?而不是Select

List<Factory> factories = Car.Select(x => x.Factories).SelectMany(y => y.Werk).ToList(); 
+6

你可以扁平化啊用'SelectMany()'層疊。 –

回答

5

使用SelectMany看來,你正在尋找SelectMany

List<Car> Car = new List<Car>() {... } 
    ... 
    var factories = Car 
    .Where(car => IsCarSpecific(car)) 
    .SelectMany(car => car.Factories 
     .Select(factory => factory.Werk)); 
    // .Distinct(); // in case you want distinct factories 
    // .ToList(); if you want materiazlize into List<Factory> 
+0

是的,這是我尋找很多謝謝 – SeeuD1

5

3

您正在尋找SelectMany,但相對於其他的答案有點嵌套:

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