这次在做项目中,遇到了这样一个问题:datable中列头的名字是不确定的,从数据库中动态查出来的,假设为typeDATA,行的数据中又包含了列头的信息,并按固定的字段分组,当查处行的数据之后用来填充每列的值,用来统计对应的列的信息,如下:

//查处获取列的表头的数据

public DataTable typeDATA
        {
            get {
                StringBuilder typeString = new StringBuilder(@"SELECT  [ID] ,[Name] FROM a");
                string Typequery = string.Format(typeString.ToString());
               return DbHelperSQL.Query(Typequery).Tables[0];
            }
        }

//行的table数据并进行列的数据填充和转换

 DataTable dt = new DataTable();
StringBuilder cnnString = new StringBuilder(@"select No,
Name '类型',COUNT(No ) as '个数' from b inner join PersonPlan on viewHandAll .LineId=PersonPlan .ID
group by No,Name");
StringBuilder sbWhere = new StringBuilder();
string query = string.Format(cnnString.ToString(), 1, (this.PageIndex - 1) * this.Rows + 1, this.PageIndex * this.Rows);
var data = DbHelperSQL.Query(query).Tables[0]; DataColumn dc = null;
//添加表头数据
foreach (DataRow item in typeData.Rows)
{
dt.Columns.Add(item["Name"].ToString(), Type.GetType("System.String"));
}
//k用来和前一行进行比较,看是否与下一行的数据相同,但对应的列的值是不同的,若是同一种数据但不同的列值,则只做添加一行数据处理,不能添加多行,但行的数据要填充到不同的列中
int k = -1;
for (int i=0;i<data.Rows.Count;i++)
{
DataRow row = dt.NewRow();
for (int j = 0; j < typeData.Rows.Count; j++)
{
if (data.Rows[i]["类型"].ToString() == typeData.Rows[j]["Name"].ToString())
{
row[typeData.Rows[j]["Name"].ToString()] = data.Rows[i]["个数"].ToString();
}
}
k++;
if (k>0 && data.Rows[k]["No"] == data.Rows[i]["No"]) //set as the same row but different column when current row is the same as second.
{
i++;
continue;
}
dt.Rows.Add(row); }

  

C# datatable竖行转换的问题的更多相关文章

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

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

  2. 利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model

    利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model   使用场景:网站配置项目,为了便于管理,网站有几个Model类来管理配置文件, 比如ConfigWebsiteMo ...

  3. ALT+TAB切换时小图标的添加 界面透明 屏幕大小 竖行字体 进程信息

    一,ALT+TAB切换时小图标的添加 Dlg类中添加变量 protected: HICON m_hIcon; #define IDR_MAINFRAME 128 ICON IDR_MAINFRAME, ...

  4. 关于datatable linq的转换

    关于datatable datarow DataTable paraval = GetParaVal(DateCondition, strUrl, Page, RowPage, iYearMonthN ...

  5. datatable赋值行

    datatable复制行:DataTable dt = "";  //这里是填充DataTable数据(""中为一个为datatable类型的值,赋值给dt)D ...

  6. PostgreSQL控制台以竖行显示

    \x select * from user; 这个和MySQL的有点区别,在查询之前使用\x进行显示的开启 注意:只需要用一次即可,以后的查询都是以竖行进行显示.

  7. ios 开发之 -- UILabel的text竖行显示

    让UILabel的内容竖行显示,我经常用一下两种方式: 第一种:使用换行符 \n label.text = @"请\n竖\n直\n方\n向\n排\n列"; label.number ...

  8. 删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误,即DeletedRowInaccessibleException

    删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误 =========================================================== 采 ...

  9. jquery datatable 多行(单行)选择(select),行获取/行删除

    jquery datatable 多行(单行)选择(select),行获取/行删除 代码展示 // 示例数据源 var dataSet = [ ['Tasman','Internet Explorer ...

随机推荐

  1. Symmetrical Network Acceleration with EBS 12

    Andy Tremayne, my esteemed colleague and fellow blogger, has published a new whitepaper that discuss ...

  2. Codeforces命令行工具

    https://github.com/xalanq/cf-tool Codeforces Tool 是 Codeforces 的命令行界面的工具. 这玩意儿挺快.挺小.挺强大,还跨平台哦. 特点 提交 ...

  3. 修复 海盗船 k70 lux 未检测到设备(k70 no device detected)

    corsair k70 lux 上周收到的生日礼物,头一次用机械键盘,还是这么高端的机械键盘(729RMB),手感一级棒.但是,有问题啊!把键盘上的 bios按钮拨到8上电脑可以识别,scroll 灯 ...

  4. c# 加密工具类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...

  5. CUDA Samples: Dot Product

    以下CUDA sample是分别用C++和CUDA实现的两个非常大的向量实现点积操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下: common.hpp: #ifndef FBC_CUD ...

  6. Vim技能修炼教程(12) - Vim的脚本语言支持

    Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...

  7. [OpenCV笔记]0.OpenCV中显示多张图像

    摘要 本文主要介绍OpenCV中同时显示多张IplImage图像的方法(C++形式的多图显示需要修改,用vector<Mat>可能比较方便),有点类似MATLAB中的subplot,只是暂 ...

  8. 【剑指offer】连续子数组的最大和,C++实现

    原创博文,转载请注明出处!本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 # 题目       输入一个整形数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求 ...

  9. 新的开源java反汇编程序Procyon

    wiki:https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler 由于jd好多年没更新了,今天找到这个新的开源反汇编,很不错 分享一 ...

  10. BZOJ5301: [Cqoi2018]异或序列(莫队)

    5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 400  Solved: 291[Submit][Status ...