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. iOS 系统通知

    iOS相当多一部分系统事件实际上都是通过通知来完成的,依赖于通知的广播形式,我们可以在AppDelegate中通过添加空通知来捕捉所有通知: static NSString *const MYNOTI ...

  2. Swift5 语言指南(十九) 错误处理

    错误处理是响应程序中的错误条件并从中恢复的过程.Swift为在运行时抛出,捕获,传播和操纵可恢复的错误提供了一流的支持. 某些操作无法保证始终完成执行或生成有用的输出.Optionals用于表示缺少值 ...

  3. MySQL程序端启动密码错误解决方法

    MySQL程序端启动密码错误解决方法 一般启动MySQL程序端,都是用mysql -uroot -p命令,当然前提是你的环境变量已经配好了. 为了连接服务器,当调用mysql时,通常需要提供一个MyS ...

  4. LeetCode--No.009 Palindrome Number

    9. Palindrome Number Total Accepted: 136330 Total Submissions: 418995 Difficulty: Easy Determine whe ...

  5. Screen会话命令 Linux

    由于经常在服务器上运行程序,本地不可能一直和服务器保持连接,而且如果本地和服务器的连接断开,在服务器上运行的程序将会终止,为了,查找了一些网络资料,发现screen 会话命令可以保持本地和服务器断开后 ...

  6. 转载:https原理:证书传递、验证和数据加密、解密过程解析

    写的太好了,就是我一直想找的内容,看了这个对https立马明白多了 http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知 ...

  7. msysGit在GitHub代码托管

    (转:http://www.cnblogs.com/xing901022/p/4388190.html) 代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. ...

  8. 002. Asp.Net Routing与MVC 之(基础知识):HttpModule 与 HttpHandler

    本文By 杨工. 一. Http.sys http.sys 从Win2003和WinXP SP2开始,就成为windows操作系统内核驱动程序,能够让任何应用程序通过它提供的接口,以http协议进行信 ...

  9. Eclipse markers窗口使用

    项目提示有错误,又不知道错误是哪里导致的,这时你可以打开eclipse的markers窗口查看错误信息或者警告信息 markers窗口提示信息: 到项目工程目录的settings目录下找到org.ec ...

  10. 自己动手实现java数据结构(七) AVL树

    1.AVL树介绍 前面我们已经介绍了二叉搜索树.普通的二叉搜索树在插入.删除数据时可能使得全树的数据分布不平衡,退化,导致二叉搜索树最关键的查询效率急剧降低.这也引出了平衡二叉搜索树的概念,平衡二叉搜 ...