web-dev-qa-db-ja.com

LINQを使用して、オブジェクトの別のリスト内のオブジェクトのリストを選択します

public class ClassA
{
     public string MyString {get; set;}
}

public class ClassB
{
     public List<ClassA> MyObjects {get; set;}
}

List<ClassB> classBList = new List<ClassB>();
var results = (from i in classBList select i.MyObjects).Distinct();

ClassA内のすべてのclassBListオブジェクトの個別のリストが必要です。 [〜#〜] linq [〜#〜]を使用してこれをどのように行うのですか?ネストされたクエリについて考えていますが、それを十分に理解できませんでした。どんな助けも大歓迎です。

40
Tom

元のリストのClassBオブジェクトごとに複数の結果オブジェクトを選択しようとしています。

したがって、 SelectMany拡張メソッド を探しています。

var results = classBList.SelectMany(b => b.MyObjects).Distinct();

クエリ式を使用する場合は、 2つのfrom を使用する必要があります。

var results = (from b in classBList from a in b.MyObjects select a).Distinct();
86
SLaks

IEnumerable.SelectMany() Extension Methodを使用して、階層をフラット化します。

var result = classBList.SelectMany(b => b.MyObjects).Distinct();
15
Justin Niessner