zoukankan      html  css  js  c++  java
  • csharp: sum columns or rows in a dataTable

                DataTable dt = setData();
                // Sum rows.
                //foreach (DataRow row in dt.Rows)
                //{
                //    int rowTotal = 0;
                //    foreach (DataColumn col in row.Table.Columns)
                //    {
                //        Console.WriteLine(row[col]);
                //        rowTotal += Int32.Parse(row[col].ToString());
                //    }
                //    Console.WriteLine("row total: {0}", rowTotal);
                //}
                //// Sum columns.
                //foreach (DataColumn col in dt.Columns)
                //{
                //    int colTotal = 0;
                //    foreach (DataRow row in col.Table.Rows)
                //    {
                //        Console.WriteLine(row[col]);
                //        colTotal += Int32.Parse(row[col].ToString());
                //    }
                //    Console.WriteLine("column total: {0}", colTotal);
                //}
                //列統計 https://stackoverflow.com/questions/5601752/how-to-sum-columns-in-a-datatable
                DataRow totalsRow = dt.NewRow();
                foreach (DataColumn col in dt.Columns)
                {
                    int colTotal = 0;
                    foreach (DataRow row in col.Table.Rows)
                    {
                        if (col.ColumnName != "Branch")
                        {
                            colTotal += Int32.Parse(row[col].ToString());
                        }
                    }
                    totalsRow[col.ColumnName] = colTotal;
                }
                dt.Rows.Add(totalsRow);
                dt.Rows[dt.Rows.Count - 1]["Branch"] = "合計";
                //行統計要增加一列 
                //https://stackoverflow.com/questions/19053430/datatable-sum-each-cell-in-a-row
                dt.Columns.Add("Total", typeof(decimal));
                foreach (DataRow row in dt.Rows)
                {
                    decimal rowSum = 0;
                    foreach (DataColumn col in dt.Columns)
                    {
                        if (col.ColumnName != "Branch")
                        {
                             if (!row.IsNull(col))
                            {
       
                                string stringValue = row[col].ToString();
                                decimal d;
                                if (decimal.TryParse(stringValue, out d))
                                    rowSum += d;
                            }
                        }
                    }
                    row.SetField("Total", rowSum);
                }
    
    
                this.dataGridView1.DataSource = dt;
    

      

      var dt = new DataTable();
                dt.Columns.Add("ProductName", typeof(string));
                dt.Columns.Add("Qty1", typeof(int));
                dt.Columns.Add("Qty2", typeof(int));
                dt.Columns.Add("Qty3", typeof(int));
    
                {
                    var dr = dt.NewRow();
                    dr["ProductName"] = "Keyboard";
                    dr["Qty1"] = 2;
                    dr["Qty2"] = 5;
                    dr["Qty3"] = 6;
                    dt.Rows.Add(dr);
                }
    
                {
                    var dr = dt.NewRow();
                    dr["ProductName"] = "Mouse";
                    dr["Qty1"] = 5;
                    dr["Qty2"] = 1;
                    dr["Qty3"] = 2;
                    dt.Rows.Add(dr);
                }
                //列
                string expression =
    
                    string.Join(" + ",
                        dt.Columns.OfType<DataColumn>()
                            .Where(x => x.DataType == typeof(int))
                            .Select(x => x.ColumnName)
                             .ToArray());
    
                dt.Columns.Add("Total", typeof(int)).Expression = expression;
    
                //DataTable1.Columns["Total"].Expression = "C1+C2+C3";
                //dt.Columns.Add("Total", typeof(Double));
                //foreach (DataRow row in dt.Rows)
                //{
                //    int sum = row<DataColumn>().Sum(dc => (int)row[dc]);
                //    row.SetField("Total", sum);
                //}
                DataRow drt = dt.NewRow();
                drt[0] = "Totals"; 
                for (int i = 1; i < dt.Columns.Count; i++)
                {
                    //1.
                    //drt[dt.Columns[i].ColumnName] = dt.Compute("Sum(" + dt.Columns[i].ColumnName + ")", "");
                    //2.
                    drt[dt.Columns[i].ColumnName] = (from DataRow dr in dt.AsEnumerable()
                                                     where dr.RowState != DataRowState.Deleted
                                                     select Convert.ToInt32(dr[dt.Columns[i].ColumnName])).Sum(); 
                    
                }
               // int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", "EmployeeId > 2"));
                //int linqSum = (from DataRow dr in dt.AsEnumerable()
                //               where dr.RowState != DataRowState.Deleted
                //               select Convert.ToInt32(dr["ColumnName"])).Sum();  
    
                dt.Rows.Add(drt); 
    
                this.dataGridView1.DataSource = dt;
    

      

  • 相关阅读:
    php二维数组排序
    重学C语言 -- printf,scanf
    php调试利器 -- xdebug
    composer php依赖管理工具
    现代php开发
    php新特性--持续更新
    2016年书单
    jenkins集成gitlab实现自动合并
    etcd安装
    nginx 日志切割
  • 原文地址:https://www.cnblogs.com/geovindu/p/6894684.html
Copyright © 2011-2022 走看看