2013-04-30 12 views
6

それぞれがChildオブジェクトのリストを持つParentオブジェクトのリストを指定すると、特定のIDと一致する子オブジェクトを探したいと思う。LINQを使用して親オブジェクトのリスト内の子オブジェクトを見つける

public class Parent 
{ 
    public int ID { get; set; } 
    public List<Child> Children { get; set; } 
} 

public class Child 
{ 
    public int ID { get; set; } 
} 

今、私は、特定のIDを持つ子オブジェクトをしたい:

List<Parent> parents = GetParents(); 
Child childWithId17 = ??? 

はどのようにLINQを使用して、これを行うことができますか?

答えて

17

は、私はあなたがしたいと思う:これは親のChildrenプロパティがnull参照であるか、またはヌル子の参照を含まないことを前提としてい

Child childWithId17 = parents.SelectMany(parent => parent.Children) 
          .FirstOrDefault(child => child.ID == 17); 

注こと。

+0

+1、アニ:)これは便利です! – zey

+0

@Ani null参照の場合は、2つの追加のWhere条件を追加できます。 –

+0

@AkashKava:もちろんですが、設計上nullが許可されていない限り、追加する必要はありません。 – Ani

6

あなたはSelectManyを使用することができます。

Child childWithId17 = parents.SelectMany(p => p.Children) 
          .Where(ch=>ch.ID==17) 
          .FirstOrDefault(); 
関連する問題