web-dev-qa-db-ja.com

Linqでコレクションのコレクションをマージする方法

IEnumerable<IEnumerable<T>>IEnumerable<T>に融合できるようにしたいと思います(つまり、すべての個々のコレクションを1つにマージします)。 Union演算子は、2つのコレクションにのみ適用されます。何か案が?

48

試してみてください

var it = GetTheNestedCase();
return it.SelectMany(x => x);

SelectManyは、基本的に「コレクション内の各アイテムに対してコレクションの要素を返す」というLINQ変換です。 1つの要素を多数に変換します(したがって、SelectMany)。コレクションのコレクションをフラットリストに分割するのに最適です。

89
JaredPar
var lists = GetTheNestedCase();
return
    from list in lists
    from element in list
    select element;

これは、C#3.0クエリ式構文を使用してこれを行う別の方法です。

14
Joe Chung