/// <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行转列的更多相关文章

  1. DataTable行转列

    /// <summary> /// DataTable行转列 /// </summary> /// <param name="dtable">需 ...

  2. C#中DataTable行转列示例

    将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...

  3. C# DataTable 行转列

    #region 根据datatable获得列名 /// <summary> /// 根据datatable获得列名 /// </summary> /// <param n ...

  4. List,DataTable实现行转列的通用方案

    最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...

  5. List实现行转列的通用方案

    最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...

  6. c# 行转列

    将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...

  7. DataTable得到某行某列的值

    DataTable dt=this.GetRepeatTableData("repeating1"); int count=dt.Rows.Count;for(int x=0;x& ...

  8. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

  9. LinQ实现DataTable不定行转列 行列转换,有图

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.c ...

随机推荐

  1. 编写和运行简单的"Hello World"操作系统内核

    通常编写一个操作系统内核是一项浩大的工程.但我今天的目标是制作一个简单的内核,用比较方便的方法在虚拟机上验证它能够被grub装载和运行,并且可通过gdb进行调试,为接下去的工作创造一个基础环境. 首先 ...

  2. Django----Request对象&Response对象

    Django 使用Request 对象和Response 对象在系统间传递状态. HttpRequest 对象: Request.body:一个字节字符串,表示原始HTTP 请求的正文.它对于处理非H ...

  3. Could not initialize class sun.awt.X11FontManager 异常问题

    查了很多资料都是建议在  catalina.sh 中增加 -Djava.awt.headless=true \  的配置. 加了没有效果. 后来发现是因为JDK版本问题,将JDK 8换成 JDK 7后 ...

  4. linux把软件安装到指定目录

    1.安装包带configure文件的: ./configure --prefix=安装目录 2.安装包不带configure文件,只带MakeFile 2.1 make install PREFIX= ...

  5. 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 ...

  6. 201453131《Java程序设计》实验三实验报告

    实验三 敏捷开发与XP实践 实验内容 •下载并学会使用git上传代码: •与同学结对,相互下载并更改对方代码,并上传: 实验步骤 下载并用git上传代码: •1.下载并安装好git,在cmd中输入gi ...

  7. python2与python3语法区别之_重定向

    python2与python3两版本的区别是众所周知的,今天主要记录python下版本2 与版本3的区别 python2 In [7]: logfile = open('/tmp/mylog.log' ...

  8. Jenkins 集成Ansible教程

    前提条件: 1. 部署Jenkins Server 2. 部署 Ansible Server 一.在Jenkins安装SSH插件 系统管理 -> 插件管理 二.在Jenkins 凭证中添加Ans ...

  9. Mybatis 一对多 简单映射配置

    只需在一对多的 “一” Model中定义一个list集合: public class SelectQuestion{ // 主键ID private Integer id; private Strin ...

  10. 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。

    先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算.渲染),最终展示在用户的眼前的. 至此,我们知道了有2个 ...