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;
csharp: sum columns or rows in a dataTable的更多相关文章
- Excel: Switch (transpose) columns and rows
链接:https://support.office.com/en-in/article/Switch-transpose-columns-and-rows-ed1215f5-59af-47e6-953 ...
- 一段话理解 MDX中的Select 、轴、COLUMNS、ROWS
理解 SELECT Understanding the SELECT statement SELECT 语句的目的是定义新的 Cube 空间,新的Cube 空间是由类似于 COLUMNS或者ROWS ...
- CSharp 案例:用 Dynamic 来解决 DataTable 数值累加问题
需求说明 给定一个 DataTable,如果从中取出数值类型列的值并对其累加? 限制:不知该列是何种数值类型. 解决方案 1.将表转换为 IEnumerable<dynamic>,而后获取 ...
- csharp: datatable get Column datatype or Column Name
/// <summary> ///列表名 /// </summary> /// <param name="table"></param&g ...
- C#中DataTable中Rows.Add 和 ImportRow 对比
最近参加项目中,数据操作基本都是用DataTable的操作,老代码中有些地方用到DataTable.Rows.Add又有些代码用的DataTable.ImportRow,于是就对比了一下 VS查询说明 ...
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...
- DataTable使用技巧总结【转】
一.DataTable简介 ()构造函数 DataTable() 不带参数初始化DataTable 类的新实例. DataTable(string tableName) 用指定的表名初始化DataTa ...
- C#用DataTable实现Group by数据统计
http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. Dat ...
- Linq中Sum和Group的使用
].AsEnumerable() group c by c.Field<int>("Name") into s select new { ID = s.Select(m ...
随机推荐
- NET Core微服务之路:再谈分布式系统中一致性问题分析
前言 一致性:很多时候表现在IT系统中,通常在分布式系统中,必须(或最终)为多个节点的数据保持一致.世间万物,也有存在相同的特征或相似,比如儿时的双胞胎,一批工厂流水线的产品,当然,我们不去讨论非IT ...
- 使用Docker搭建CentOS 7 + Apache 2.4+ PHP7
从Docker Hub上Pull最新的CentOS 7镜像并新建容器 # sudo docker pull centos docker run -p 8082:80 --name centos_c - ...
- C#.Net平台与OPC服务器通讯
最近,我们Ndolls工作室承接了山大某个自动化控制项目,主要做了一套工控信息化系统,其中有一个功能模块是将系统管理的一部分数据参数发送至OPC服务器,由OPC服务器接收数据后执行相应工控操作.第一次 ...
- Jira/Confluence的备份、恢复和迁移
之前的文章已经分别详细介绍了Jira.Confluence的安装及二者账号对接的操作方法,下面简单说下二者的备份.恢复和迁移: 一.Jira.Confluence的备份.恢复1)Confluence的 ...
- Javascript百学不厌 - 尾递归
虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { ) ; ); } fac() 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4* ...
- LabVIEW(十一):条件结构的巧用
一.LabVIEW中条件结构使用起来并不是那么简便,主要体现在两点: 1.由隧道的产生引起的一些问题.(当箭头停留在隧道处时不显示为“自动索引隧道”,所以此隧道非彼隧道) 2.由多层结构判断引起的不易 ...
- ubuntu 16.04 安装chrome的方法
默认chrome在ubuntu上是没默认安装,安装也不能使用apt-get 来安装,一般会遇到名字无法找到的问题. 摸索了一下,才找到一个比较好的安装方式: 1 从网站: https://www.ch ...
- Maven - Tips
1- Maven的Settings http://maven.apache.org/settings.html 2- Maven设置代理 示例: <proxies> <proxy&g ...
- .NET手记-友盟消息推送服务器端加密算法的实现
最近为App开发消息推送功能,这里我们采用了友盟的消息推送服务,但其后台简陋,可定制化程度低,所以决定接入服务器端API,在自己的服务器上部署一套推送服务. 其中涉及到很多问题,首先要解决的就是与友盟 ...
- python tricks
1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate ...