0

C#ページの条件に基づいて、データテーブルのデータを1つの行にまとめる必要があります

例えば

この表では、行が異なりますが、最後の3行の日付は同じです。日付で結合するテーブルのデータが必要です

つまり、同じ日付の行では、他の列のデータを下の画像のように追加する必要があります

私のデータテーブルには非常に大量のデータが含まれているので、これをより少ない反復で解決するのに役立ちますか?

4

2 に答える 2

1

これを実現するためにlinqを使用します。状況に合わせて少し変更できる小さなケースを作成しました。

    var list = new List<Model>();

    list.Add(new Model { Date = DateTime.Now, Total = 3 });
    list.Add(new Model { Date = DateTime.Now, Total = 3 });
    list.Add(new Model { Date = DateTime.Now, Total = 3 });

    var combined = from item in list
                   group item by new { item.Date, item.Total }
                   into grouped
                   select new Model
                       {
                           Date = grouped.Key.Date,
                           Total = grouped.Sum(i => i.Total)
                       };

これModelはモデルであり、テーブルに表示されているデータが含まれています。基本的に、あなたはあなたが同じである必要があるすべての分野でグループを作ります。次に、グループ化されたエントリで埋められる新しい`IEnumerable'を作成します。ここでは、グループキーの日付を使用でき、他の値を合計できます。

- 編集

すべてを行として直接に追加するには、次のDataTableようにします。

        var list = new List<Model>();

        list.Add(new Model { Date = DateTime.Today, Total = 3 });
        list.Add(new Model { Date = DateTime.Today, Total = 3 });
        list.Add(new Model { Date = DateTime.Today, Total = 3 });

        var table = new DataTable();
        table.Columns.Add("Date");
        table.Columns.Add("Total");

        foreach (var grouped in from item in list
                                group item by new { item.Date, item.Total }
                                    into grouped
                                    select grouped)
        {
            table.Rows.Add(grouped.Key.Date, grouped.Sum(i => i.Total));
        }
于 2012-07-31T07:49:41.550 に答える
0

私はこれを行うことで解決策を得ました。ビョルンのポストは私を助けてくれました。

var drdatedisp = from row in dtfullreport.AsEnumerable()
                  group row by row.Field<string>("Order_Date") into g
                  select new
                  {
                      Order_Date = g.Key,
                      totalAmt = g.Sum(a => a.Field<int>("Item_Quantity"))

                  };
 DataTable dtdatedisp = new DataTable();
 dtdatedisp.Columns.Add("Order_Date");
 dtdatedisp.Columns.Add("Quantity");
 dtdatedisp.Rows.Clear();
 foreach (var g in drdatedisp)
 {
     DataRow newRow1 = dtdatedisp.NewRow();
     newRow1[0] = g.Order_Date;
     newRow1[1] = g.totalAmt;
     dtdatedisp.Rows.Add(newRow1);
 }

また、変数のデータをデータテーブルに追加しました。

于 2012-07-31T09:13:19.017 に答える