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;

  

csharp: sum columns or rows in a dataTable的更多相关文章

  1. Excel: Switch (transpose) columns and rows

    链接:https://support.office.com/en-in/article/Switch-transpose-columns-and-rows-ed1215f5-59af-47e6-953 ...

  2. 一段话理解 MDX中的Select 、轴、COLUMNS、ROWS

    理解 SELECT  Understanding the SELECT statement SELECT 语句的目的是定义新的 Cube 空间,新的Cube 空间是由类似于 COLUMNS或者ROWS ...

  3. CSharp 案例:用 Dynamic 来解决 DataTable 数值累加问题

    需求说明 给定一个 DataTable,如果从中取出数值类型列的值并对其累加? 限制:不知该列是何种数值类型. 解决方案 1.将表转换为 IEnumerable<dynamic>,而后获取 ...

  4. csharp: datatable get Column datatype or Column Name

    /// <summary> ///列表名 /// </summary> /// <param name="table"></param&g ...

  5. C#中DataTable中Rows.Add 和 ImportRow 对比

    最近参加项目中,数据操作基本都是用DataTable的操作,老代码中有些地方用到DataTable.Rows.Add又有些代码用的DataTable.ImportRow,于是就对比了一下 VS查询说明 ...

  6. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  7. DataTable使用技巧总结【转】

    一.DataTable简介 ()构造函数 DataTable() 不带参数初始化DataTable 类的新实例. DataTable(string tableName) 用指定的表名初始化DataTa ...

  8. C#用DataTable实现Group by数据统计

    http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. Dat ...

  9. Linq中Sum和Group的使用

    ].AsEnumerable() group c by c.Field<int>("Name") into s select new { ID = s.Select(m ...

随机推荐

  1. 8.AOP全自动

    CGLIB字节码增强 l没有接口,只有实现类. 采用字节码增强框架 cglib,在运行时 创建目标类的子类,从而对目标类进行增强. 导入jar包: 自己导包(了解): 核心:hibernate-dis ...

  2. maya2018卸载/安装失败/如何彻底卸载清除干净maya2018注册表和文件的方法

    maya2018提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装maya2018失败提示maya2018安装未完成,某些产品无法安装,也有时候想重新安装maya ...

  3. JavaScript中的定时事件

    这两个函数都是在给定的时间之后开始执行的,并不是立即执行. var timeId = window.setTimeout("method()",1000); //定时执行,还可以这 ...

  4. a标签嵌套a标签在实际项目开发中遇到的坑

    大家都知道HTML的嵌套规范,其中一个规范是块元素嵌套行内元素,块元素嵌套块元素,行内元素嵌套行内元素,行内元素不能嵌套块元素. 其中需要注意的是行内元素嵌套行内元素,a标签虽然是行内元素,但是a标签 ...

  5. [CocoaPods]CocoaPods安装详解

    安装CocoaPods之前先安装ruby: 1.安装ruby ruby官网rubygems.org已被屏蔽,替换当前镜像是否为国内镜像. $gem sources --add https://gems ...

  6. 多核CPU配合负载均衡可以这样用,为老板省点钱

    负载均衡作为一个处理高并发,大流量的访问的业务场景,已经几乎是常识性的知识了. 而本文的意义在于需求:由于大流量请求,导致服务无法正常响应,在不增加购买机器成本的场景下,如何提高服务器的业务处理能力? ...

  7. Intellij-忽略其他编译错误,运行当前文件

    在使用Intellij IDEA的时候,有时候想在项目中写个main()方法或者单元测试测试个功能,但是有其他文件编译出错IDEA就提示我说不能运行,很是烦恼. 能不能像Eclipse一样呢,其他编译 ...

  8. 全网最详细的实用的搜索工具Listary和Everything对比的区别【堪称比Everything要好】(图文详解)

    不多说,直接上干货! 引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情.   你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出 ...

  9. 今天讲座的感悟--java

    发现当你擅长于某一专业,永远那专业上的人才挤挤.倘若你和相邻专业结合,就能更厉害的走在交叉专业上.例如:医学加计算机等 待续...

  10. TCP/IP 笔记 - 链路层

    链路层的目的是为IP模块发送和接收IP数据报. 以太网和IEEE 802局域网标准 以太网指的是一套标准,有DEC.Intel公司和Xerox公司在1980年首次发布,并在1982年加以修订.第一个常 ...