私は現在、LINQという学習曲線をたどっており、実際にいくつかの支援を使用できます。自分のやりたいことが実現可能かどうかはわかりませんが、賭けなければならない場合はそうでしょう。
現在、_tablesと呼ばれるオブジェクトのリストがあり、これらの各オブジェクトには、 "Indexes"プロパティを通じて公開されたオブジェクトの別のリストが含まれています。基本的に、すべての_tablesからのすべてのインデックスを含む1つのリストで終了したいと思います。
ここに私がこれまで持っているものがあります:
var indexes = from TableInfo tab
in _tables
where tab.Indexes.Count > 0
select tab.Indexes;
残念ながら、これは私にリストの別のリストを与えているようですが、インデックスリストに複数の値が含まれている場合のみ...ループなしでこれらのリストをすべてまとめる方法はありますか?
SelectMany
拡張メソッドを使用したい。
_tables.SelectMany(t => t.Indexes)
Tbischelの回答に加えて、目的のクエリ式バージョンを以下に示します。
var indexes = from TableInfo tab in _tables
from index in tab.Indexes
select index;
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;
もう少しおなじみのシンタズ
var rows = from item in table select item;