0

我需要根据我的 c# 页面中的条件将数据表中的数据合并到一行中

例如

在此表中,我有不同的行,但最后三行具有相同的日期。我需要将表中的数据按日期组合

即在具有相同日期的行中,必须添加其他列中的数据,如下图所示

我的数据表包含非常大量的数据,所以你能在更少的迭代中帮助解决这个问题吗?

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”,其中填充了分组条目。在这里,您可以使用 group-key 中的日期,并且可以对其他值求和。

- 编辑

要将所有内容作为行直接添加到 a 中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

I got the solution by doing this. The post of Bjorn helped me.

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);
 }

also I added the data from the variables to a datatable.

于 2012-07-31T09:13:19.017 回答