0

動的にする必要があるクエリがあります。構文のほとんどは正しいと思いますが、グループ化する列の名前を付ける方法がわかりません。いくつかの異なるアプローチを試してみましたが、常にエラーが発生します - 「タイプ 'datarow' にプロパティまたはフィールド 'name' が存在しません」

IQueryable<Result> aggregate1 = 
      query1Data.Tables[0].AsEnumerable().AsQueryable()
                .GroupBy("name", "it")
                .Select<Result>("new(Key as Group, Sum(value)as Total)");

次のようなものを使用する必要があると思いますがField<string>("name")、わかりません。いくつかのフォーラムでこの問題を見てきましたが、問題を回避する方法を明確に答えている人は誰もいないようです。

4

2 に答える 2

0

これはあなたがやろうとしていたことですか?

var aggregate1 =
        query1Data.Tables[0].AsEnumerable().AsQueryable()
            .GroupBy(row => row.Field<string>("name"), row => row.Field<int>("it"))
            .Select(g => new { Group = g.Key, Total = g.Sum() });
于 2010-08-12T09:46:46.443 に答える
0

私はあなたが何を望んでいるかを正確に理解しているかどうかはわかりませんが、インスピレーションとして使用できるコードの小さなスニペットを次に示します。

var dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(String));
dataTable.Columns.Add("Value", typeof(Int32));
dataTable.Rows.Add("A", 1);
dataTable.Rows.Add("A", 2);
dataTable.Rows.Add("B", 3);
dataTable.Rows.Add("B", 4);

var aggregate = dataTable.AsEnumerable()
  .GroupBy(row => row.Field<String>("Name"), row => dataRow.Field<Int32>("Value"))
  .Select(group => new { Name = group.Key, Total = group.Sum() });

foreach (var row in aggregate)
  Console.WriteLine(row.Name + " = " + row.Total);
于 2010-08-12T09:47:44.823 に答える