これにアプローチするには、いくつかの方法があります。
項目を列の種類別にグループ化することに関心がない場合、このクエリは次のことを実現します。
var query = from DataColumn col in stationTable.Columns
from DataRow row in stationTable.Rows
where col.ColumnName.StartsWith("B_")
select row[col.ColumnName];
ただし、グループ化を維持するには、次のようにルックアップを使用できます。
var query = (from DataColumn col in stationTable.Columns
from DataRow row in stationTable.Rows
where col.ColumnName.StartsWith("B_")
select new { Row = row[col.ColumnName], col.ColumnName })
.ToLookup(o => o.ColumnName, o => o.Row);
foreach (var group in query)
{
Console.WriteLine("ColumnName: {0}", group.Key);
foreach (var item in group)
{
Console.WriteLine(item);
}
}
どちらのアプローチの欠点も、object
. 厳密に型指定された方法で結果を保持するには、質問の動的な性質を考えると、追加の作業が必要になります。