2

可変数の列を持つ DataTable があります。「B_」で始まる列からデータを返す LINQ クエリを作成したいと考えています。「B_」で始まる列名を返すクエリがあります。以下です。

var arrayNames = (from DataColumn x in stationTable.Columns
                          where x.ColumnName.Contains("B_")
                          select x.ColumnName).ToArray();

列名を取得したので、この配列を使用して列のデータを返すクエリを作成する方法を教えてください。

ありがとう

4

2 に答える 2

0

これにアプローチするには、いくつかの方法があります。

項目を列の種類別にグループ化することに関心がない場合、このクエリは次のことを実現します。

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. 厳密に型指定された方法で結果を保持するには、質問の動的な性質を考えると、追加の作業が必要になります。

于 2013-11-07T17:35:28.370 に答える