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. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

  2. 背水一战 Windows 10 (80) - 本地化

    [源码下载] 背水一战 Windows 10 (80) - 本地化 作者:webabcd 介绍背水一战 Windows 10 之 本地化 Demo 改变语言 示例1.演示本地化的基本应用Localiz ...

  3. weblogic安装及配置

    WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的Java应用服务器. 1.安装Weblogic:(1)点击Next按钮:(2) 选择Custom后点击Next按 ...

  4. Java实现大数相加、相乘(不使用BigInteger)

    大数相加: package algorithm; //使用BigInteger类验证 import java.math.BigInteger; public class BigAdd { public ...

  5. Java高级开发必会的50个性能优化细节

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...

  6. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. jmeter获取cookies信息(配置)

    jmeter发送请求后,响应信息里获取不到cookies(实际上会返回一个cookies),解决方法: 在jmeter.properties里找到CookieManager.save.cookies, ...

  8. 深度学习笔记(八)Focal Loss

    论文:Focal Loss for Dense Object Detection 论文链接:https://arxiv.org/abs/1708.02002 一. 提出背景 object detect ...

  9. JavaSE-关键字final

    final修饰数据: final修饰基本数据类型,使数值恒定不变,修饰对象引用,final使引用恒定不变 final修饰的成员变量必须要被初识化 final可以修饰方法中的参数列表,被修饰的参数无法在 ...

  10. 第三章:Activity的生命周期

    一:Activity的生命周期方法 Android提供了很多Activity的生命周期方法,比如我们常用的onCreate.onPause.onResume等.这里主要介绍粗粒度的周期方法,诸如onP ...