2016-04-28 9 views
1

私は車のリストを持っており、リストには生産工場があります。LINQを使用したリストのリストからすべてのオブジェクトを取得する方法

List<Car> cars = new List(); 

このリストには、各車が生産にある工場があります。

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

ここで、私は特定の車が生産にあるすべての工場を持つように、単一の工場とのリストを取得したいと思います。例については

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

私の問題は、オブジェクトが1つのレベル深くであるということです。

どのようにLINQ文を使用してオブジェクトを取得するか、すべての工場で取得するより簡単な方法があります:

私の質問はありますか?ややネストされた他の回答とは対照的に、

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> 
+6

ああ'SelectMany()'でierarchyを実行します。 –

答えて

5

使用SelectManyではなくSelect

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

はい、それは何を私は多くのおかげで探しています – SeeuD1

5

のあなたがSelectManyを探していることを、そうです:

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

あなたはSelectManyを探している、しかし:

関連する問題