c# DataTable行转列
/// <summary>
/// datatable行转列
/// </summary>
/// <param name="dtSrc">来源datatable</param>
/// <returns>行转列结束的datatable</returns>
private System.Data.DataTable ConvertDataTable(System.Data.DataTable dt)
{
var date = this.dtpStartDay.Text + "到" + this.dtpEndDay.Text;
var list = from c in dt.AsEnumerable()
select new {
日期 = c.Field<string>("日期"),
财务编号 = c.Field<string>("财务编号"),
财务名称 = c.Field<string>("财务名称"),
平台名称 = c.Field<string>("平台名称"),
面值 = Convert.ToDecimal(c.Field<string>("面值"))
}; var tmplist = (from item in list
group item by item.财务编号 into g
select new
{
code = g.Key,
vallist = from val in g
group val by val.平台名称 into gs
select new
{
pltname = gs.Key,
pltvalue = gs.Sum(t => t.面值)
}
}).ToList(); dt = new System.Data.DataTable();
dt.Columns.Add("日期");
dt.Columns.Add("财务编号");
dt.Columns.Add("财务名称");
var colNames = list.Select(t => t.平台名称).Distinct();
foreach (var col in colNames)
{
dt.Columns.Add(col);
}
dt.Columns.Add("平台合计"); foreach (var item in tmplist)
{
var dr = dt.NewRow(); dr.BeginEdit();
dr["日期"] = date;
dr["财务编号"] = item.code;
dr["财务名称"] = list.FirstOrDefault(t => t.财务编号 == item.code).财务名称;
dr["平台合计"] = item.vallist.Sum(t => t.pltvalue); foreach (var col in colNames)
{
if (item.vallist.Any(t => t.pltname == col))
{
dr[col] = item.vallist.Single(t => t.pltname == col).pltvalue;
}
else
{
dr[col] = 0;
}
} dr.EndEdit();
dt.Rows.Add(dr);
}
return dt;
}
c# DataTable行转列的更多相关文章
- DataTable行转列
/// <summary> /// DataTable行转列 /// </summary> /// <param name="dtable">需 ...
- C#中DataTable行转列示例
将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...
- C# DataTable 行转列
#region 根据datatable获得列名 /// <summary> /// 根据datatable获得列名 /// </summary> /// <param n ...
- List,DataTable实现行转列的通用方案
最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...
- List实现行转列的通用方案
最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...
- c# 行转列
将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...
- DataTable得到某行某列的值
DataTable dt=this.GetRepeatTableData("repeating1"); int count=dt.Rows.Count;for(int x=0;x& ...
- C#动态操作DataTable(新增行、列、查询行、列等)
public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...
- LinQ实现DataTable不定行转列 行列转换,有图
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.c ...
随机推荐
- 编写和运行简单的"Hello World"操作系统内核
通常编写一个操作系统内核是一项浩大的工程.但我今天的目标是制作一个简单的内核,用比较方便的方法在虚拟机上验证它能够被grub装载和运行,并且可通过gdb进行调试,为接下去的工作创造一个基础环境. 首先 ...
- Django----Request对象&Response对象
Django 使用Request 对象和Response 对象在系统间传递状态. HttpRequest 对象: Request.body:一个字节字符串,表示原始HTTP 请求的正文.它对于处理非H ...
- Could not initialize class sun.awt.X11FontManager 异常问题
查了很多资料都是建议在 catalina.sh 中增加 -Djava.awt.headless=true \ 的配置. 加了没有效果. 后来发现是因为JDK版本问题,将JDK 8换成 JDK 7后 ...
- linux把软件安装到指定目录
1.安装包带configure文件的: ./configure --prefix=安装目录 2.安装包不带configure文件,只带MakeFile 2.1 make install PREFIX= ...
- linux go with vscode
1 install go apt install golang 将会同时安装下列软件: golang-1.9 golang-1.9-doc golang-1.9-go golang-1.9-src ...
- 201453131《Java程序设计》实验三实验报告
实验三 敏捷开发与XP实践 实验内容 •下载并学会使用git上传代码: •与同学结对,相互下载并更改对方代码,并上传: 实验步骤 下载并用git上传代码: •1.下载并安装好git,在cmd中输入gi ...
- python2与python3语法区别之_重定向
python2与python3两版本的区别是众所周知的,今天主要记录python下版本2 与版本3的区别 python2 In [7]: logfile = open('/tmp/mylog.log' ...
- Jenkins 集成Ansible教程
前提条件: 1. 部署Jenkins Server 2. 部署 Ansible Server 一.在Jenkins安装SSH插件 系统管理 -> 插件管理 二.在Jenkins 凭证中添加Ans ...
- Mybatis 一对多 简单映射配置
只需在一对多的 “一” Model中定义一个list集合: public class SelectQuestion{ // 主键ID private Integer id; private Strin ...
- 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。
先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算.渲染),最终展示在用户的眼前的. 至此,我们知道了有2个 ...