csharp: sum columns or rows in a dataTable
2018-06-18 04:15:43来源:未知 阅读 ()
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;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C#基础---值类型和引用类型
- 死磕Lambda表达式(六):Consumer、Predicate、Function复 2020-04-07
- 多线程笔记 - provider-consumer 2020-02-26
- 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方 2020-02-05
- rabbit - producer的confirm和consumer的ack模式 2019-08-31
- RocketMQ中PullConsumer的消息拉取源码分析 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash