web-dev-qa-db-ja.com

LINQ-リスト内のリスト内のすべてのアイテムを取得しますか?

私は現在、LINQという学習曲線をたどっており、実際にいくつかの支援を使用できます。自分のやりたいことが実現可能かどうかはわかりませんが、賭けなければならない場合はそうでしょう。

現在、_tablesと呼ばれるオブジェクトのリストがあり、これらの各オブジェクトには、 "Indexes"プロパティを通じて公開されたオブジェクトの別のリストが含まれています。基本的に、すべての_tablesからのすべてのインデックスを含む1つのリストで終了したいと思います。

ここに私がこれまで持っているものがあります:

var indexes = from TableInfo tab
              in _tables
              where tab.Indexes.Count > 0
              select tab.Indexes;

残念ながら、これは私にリストの別のリストを与えているようですが、インデックスリストに複数の値が含まれている場合のみ...ループなしでこれらのリストをすべてまとめる方法はありますか?

19
Sonny Boy

SelectMany拡張メソッドを使用したい。

_tables.SelectMany(t => t.Indexes)
39
tbischel

Tbischelの回答に加えて、目的のクエリ式バージョンを以下に示します。

var indexes = from TableInfo tab in _tables 
              from index in tab.Indexes
              select index;
6
Anthony Pegram

Where句は必要ありません。また、タブが何であるかを伝える必要もありません。

そして、あなたはSelectManyを使用する必要があります

var indexes = (from tab in _tables).SelectMany(t => t.Indexes)

またはあなたはこのようにすることができます

   var indexes = from tab in _tables
                  from t in tab.Indexes
                  select t;

もう少しおなじみのシンタズ

5
msarchet
var rows = from item in table select item;
2
Qasims