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 ...
随机推荐
- Spring Tomcat启动过程
入口,配置再web.xml中, 初始化applicationContext 创建webApplicationContext,这里可加载web.xml文件中定义了contextClass 获取conte ...
- shell编程(一)
转义和引用 引入问题:之前我们知道了变量名前面加上$符号代表引用变量,但是如果我现在就需要打印出$符号该怎么办呢?想想我们在python中怎么做的,答案是转义. 转义 Shell中有两种字符一种是普通 ...
- node实现rar格式压缩
背景 由于公司的CMS系统里,只接受rar格式压缩的文件,所以没法直接使用nodejs里提供的zip压缩组件.只能从winRar软件入手了,但网上没有多少这方面相关的东西,所以下面也是自己尝试着在做. ...
- LeetCode——Increasing Triplet Subsequence
Question Given an unsorted array return whether an increasing subsequence of length 3 exists or not ...
- 数据结构(十一)B树
之前的二叉排序树,平衡二叉树都是基于二叉树的实现,但是在搜索过程中,效率和树的深度有关,所以就想到把二叉树改为多叉树,B树和B+树都基于多叉树的实现 多路查找树 B树 定义 应用场景 B+树 ...
- 2017 ACM/ICPC Asia 南宁区 L The Heaviest Non-decreasing Subsequence Problem
2017-09-24 20:15:22 writer:pprp 题目链接:https://nanti.jisuanke.com/t/17319 题意:给你一串数,给你一个处理方法,确定出这串数的权值, ...
- PMP第一章:引论
项目是为创造独特的产品,服务或成果而进行的临时性的工作. 项目的临时性是指项目有明确的起点和终点. 项目旨在推动组织从一个状态(当前状态)转到另一个状态(将来状态),从而达成特定目标. 项目管理就是将 ...
- asp.net core + log4net+exceptionles+DI
参考了ABP的代码,我也用依赖注入的原则,设计了日志模块. 与abp不同之处在于:1)DI容器使用的是.net core自带的注入容器,2)集成了excetpionless日志模块,3)不依赖于abp ...
- Jenkins-Kubernetes-docker-自动发布
使用的是Jenkins pipeline: 这里只是做了更新,没有创建,没有借助helm等工具,先用着,以后再研究. pipeline { agent any stages { stage(" ...
- 一次http请求,谁会先断开TCP连接?什么情况下客户端先断,什么情况下服务端先断?
我们有2台内部http服务(nginx): 201:这台服务器部署的服务是account.api.91160.com,这个服务是供前端页面调用: 202:这台服务器部署的服务是hdbs.api.911 ...