7

ネストされたリストに問題があります。だから私は3つのクラスを持っています:

public class Class1
{
   public string Name {get;set;}
   public List<Class2> Class2List {get;set;}
}
public class Class2
{
   public string Name {get;set;}
   public List<Class3> Class3List {get;set;}
}
public class Class3
{
   public string Name {get;set;}
}

Class1 から Class2.Name = "something" であるすべての Class3.Name を選択したいと思います。結果がIEnumerable stringになることが重要です。どのように解決すればよいですか?

4

2 に答える 2

10

LINQ 式には、複数のネストされたfrom句を含めることができます。

// nested from clauses
var names = from c1 in myClass1List
            from c2 in c1.Class2List
            where c2.Name == "something"
            from c3 in c2.Class3List
            select c3.Name;

完全を期すために、メソッド構文を使用した 2 つのバリアントを次に示します。

var names = myClass1List
    .SelectMany(c1 => c1.Class2List.Where(c2 => c2.Name == "something"))
    .SelectMany(c2 => c2.Class3List.Select(c3 => c3.Name));

var names = myClass1List
    .SelectMany(c1 => c1.Class2List
        .Where(c2 => c2.Name == "something")
        .SelectMany(c2 => c2.Class3List
            .Select(c3 => c3.Name)));
于 2013-09-11T08:46:18.210 に答える