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 ...
随机推荐
- ONVIF学习-ONVIF开发框架搭建(C++)
第一步.下载gsoap 从gsoap官网(http://www.genivia.com/products.html#notice)下载最新版gsoap(博主用的是gsoap_2.8.45).gsoap ...
- 如何用纯 CSS 创作一只徘徊的果冻怪兽
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VdOKQG 可交互视频 ...
- vim 中查询和转换编码
vim中查询修改文件编码格式 set fileencoding 查看现在文本的编码 :set fenc=编码 转换当前文本的编码为指定的编码 :set enc=编码 以指定的编码显示文本,但不保存到文 ...
- 解题报告:poj2689 Prime Distance
2017-10-03 11:29:20 writer:pprp 来源:kuangbin模板 从已经筛选好的素数中筛选出规定区间的素数 /* *prime DIstance *给出一个区间[L,U],找 ...
- 跟着vamei复习概率论
最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...
- DataTable扩展:转化实体ToList
直接上代码: 根据属性进行映射:DataTable转化成实体List public static class DataTableExtension { public static List<T& ...
- python正则表达式 Python Re模块
最近在学python 练习的时候随手写的,方便以后自己参考~如果能对其他同学有所帮助就再好不过了 希望大家指正哦~ 我会随时整理的,先这样~ 正则表达式 1.元字符([ ]),它用来指定一个char ...
- nginx的坑-org.apache.http.TruncatedChunkException: Truncated chunk( expected size: 7752; actual size: 4077)
org.apache.http.TruncatedChunkException: Truncated chunk 项目中使用请求远程接口报错 ,项目是Spring-boot的,两个项目(A和B) , ...
- spring的静态代理和动态代理
Java静态代理 Jdk动态代理 java代理模式 即Proxy Pattern,23种java常用设计模式之一.代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问. 原理: 代理模式的主要 ...
- ubuntu mac terminal install software
http-server // ubuntu sudo npm install http-server -g npm node.js yarn