• 将DataSet 纵向显示数据


    前日经理交付我一任务,将如下表格转换成纵向显示:

    id  name  age
    1    张三   18
    2    李四   20

    转换成:

    id    1    2
    name    张三   李四
    age     18     20

    冥思苦想,终得正果,代码如下:

    View Code
     1  public DataSet RowConvertColumn(DataSet dataSet)
    2 {
    3 DataTable dataTable = dataSet.Tables[0];
    4 DataSet resultDs = new DataSet();
    5 DataTable resultDt = new DataTable();
    6 //建列
    7 DataColumn resultDc1 = new DataColumn();
    8 resultDc1.ColumnName = dataTable.Columns[0].ColumnName;
    9 resultDt.Columns.Add(resultDc1);
    10 foreach (DataRow item in dataTable.Rows)
    11 {
    12 DataColumn resultDc2 = new DataColumn();
    13 resultDc2.ColumnName = item[0].ToString();
    14 resultDt.Columns.Add(resultDc2);
    15 }
    16 //建行
    17 for (int k = 1; k < dataTable.Columns.Count; k++)
    18 {
    19 DataRow resultDr = resultDt.NewRow();
    20 for (int i = 0; i < resultDt.Columns.Count; i++)
    21 {
    22 if (i == 0)
    23 {
    24 resultDr[i] = dataTable.Columns[k].ColumnName;
    25 }
    26 else
    27 {
    28 resultDr[i] = dataTable.Rows[i - 1][k].ToString();
    29 }
    30 }
    31 resultDt.Rows.Add(resultDr);
    32 }
    33 resultDs.Tables.Add(resultDt);
    34
    35 return resultDs;
    36 }

    后又觉得的美中不足:不能自定义列名,重载一下,增加一个字符串数组 参数来保存列名

    View Code
     1 //把行转换成列,提供一个列名数组
    2 public DataSet RowConvertColumn(DataSet dataSet, string[] columns)
    3 {
    4 //验证数组长度与dataSet列数是否相等
    5 if (dataSet.Tables[0].Columns.Count != columns.Length)
    6 {
    7 return null;
    8 }
    9 DataTable dataTable = dataSet.Tables[0];
    10 DataSet resultDs = new DataSet();
    11 DataTable resultDt = new DataTable();
    12 //建列
    13 DataColumn resultDc1 = new DataColumn();
    14 resultDc1.ColumnName = columns[0];
    15 resultDt.Columns.Add(resultDc1);
    16 foreach (DataRow item in dataTable.Rows)
    17 {
    18 DataColumn resultDc2 = new DataColumn();
    19 resultDc2.ColumnName = item[0].ToString();
    20 resultDt.Columns.Add(resultDc2);
    21 }
    22 //建行
    23 for (int k = 1; k < dataTable.Columns.Count; k++)
    24 {
    25 DataRow resultDr = resultDt.NewRow();
    26 for (int i = 0; i < resultDt.Columns.Count; i++)
    27 {
    28 if (i == 0)
    29 {
    30 resultDr[i] = columns[k];
    31 }
    32 else
    33 {
    34 resultDr[i] = dataTable.Rows[i - 1][k].ToString();
    35 }
    36 }
    37 resultDt.Rows.Add(resultDr);
    38 }
    39 resultDs.Tables.Add(resultDt);
    40
    41 return resultDs;
    42 }

    注意保证数组长度与表的列数相等,否则返回null。
    作者:王亚峰
    出处:http://www.cnblogs.com/wyfblog
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    【JQuery Easy UI】后台管理系统的简单布局分享
    Effective JavaScript Item 10 避免使用with
    娓娓道来c指针 (4)解析c的声明语句
    打造敏捷外包团队的高度自主与自我学习的生态系统
    LeetCode --- Count And Say
    RAD Studio XE8 技术研讨会讲义与范例程序下载
    SpringMVC工作原理
    SpringMVC 学习笔记(十一) SpirngMVC执行流程
    转 jeecg3.5中多数据源的配置
    浅谈JEECG多数据源的使用
  • 原文地址:https://www.cnblogs.com/wyfblog/p/2184144.html
Copyright © 2020-2023  润新知