如何转换列数据表C#中的行 [英] How to convert rows in column datatable C#

查看:90
本文介绍了如何转换列数据表C#中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的桌面结果是

My Table Result is

Name	Id	fee_head	     fee
Jhon	        1	EXAM FEE              1
Jhon	        1	STATE OF MARKS	     80
Jhon	        1	TERM END EXAM	     300
Jhon	       1	COST OF FORM	      20
Charli	      40	EXAM FEE	      4
Charli	      40	STATE OF MARKS	      80
Charli	      40	TERM END EXAM	      300
Charli	       40	COST OF FORM	      20
Jacky	       2	EXAM FEE	      3
Jacky	       2	STATE OF MARKS	     80
Jacky	       2	TERM END EXAM	     300
Jacky	       2	COST OF FORM	     20

< br $> b $ b



但我想要这个囚犯






But I Want This Formate

Student_Name	Student_Id	fee_head_1	fee_1	fee_head_2	fee_2	fee_head_4	fee_4	fee_head_5	fee_5		
Jhon	1	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		
Charli	40	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		
Jacky	2	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		



第一个拖曳列就是它...并且fee_head列是多个并且rwos甲酸酯怎么做??? plzz帮助





我尝试了什么:



我有一些代码尝试但是


First tow column is as it is...and fee_head column is multiple and rwos formate how do???plzz Help


What I have tried:

i have some code try but

DataTable query = new DataTable();
  query = obj_Cls_Main.Read_Table("RESULT QUERY");

             DataTable dtpivot = new DataTable();
             for (int i = 0; i <= query.Rows.Count; i++)
             {
                 dtpivot.Columns.Add(i.ToString());

             }
             for (int i = 0; i < query.Columns.Count; i++)

             {

                 DataRow dr = dtpivot.NewRow();

                 dr[0] = query.Columns[i].ToString();

                 for (int j = 0; j < query.Rows.Count; j++)

                     dr[j + 1] = query.Rows[j][i];

                 dtpivot.Rows.Add(dr);

             }
             gridControl1.DataSource = dtpivot;

推荐答案

您好,



下面,代码对表格进行排序。



Hi,

Below, the code that sorts the table.

private int find_index_column_list(string[,] list, string element)
{
    int index_column = 0;
    for (int index = 0; index < (list.Length /2); index++)
    {
        if (list[index, 0] == element)
        {
            index_column = Convert.ToInt16(list[index, 1]);
            return index_column;
        }
    }

    return -1;
}

private void order_table()
{
    try
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Id");
        dt.Columns.Add("fee_head");
        dt.Columns.Add("fee");

        DataRow dr = dt.NewRow();
        dr["Name"] =  "John";
        dr["Id"] = "1";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "John";
        dr["Id"] = "1";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Charli";
        dr["Id"] = "40";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Charli";
        dr["Id"] = "40";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Jacky";
        dr["Id"] = "2";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Jacky";
        dr["Id"] = "2";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        //create columns
        DataTable dtpivot = new DataTable();
        dtpivot.Columns.Add("Student_Name");
        dtpivot.Columns.Add("Student_Id");
        dtpivot.Columns.Add("fee_head_1");
        dtpivot.Columns.Add("fee_1");
        dtpivot.Columns.Add("fee_head_2");
        dtpivot.Columns.Add("fee_2");


        string[,] list = new string[2, 2];
        list[0, 0] = "1"; //fee id
        list[0, 1] = "3"; //index column
        list[1, 0] = "80";//fee id
        list[1, 1] = "5"; //index column

        string student_id = "";
        int index_column = 0; //index column element
        dr = null;

        //read each line
        foreach (DataRow drline in dt.Rows )
        {
            //verify if is the same student
            if (student_id != drline["Id"].ToString())
            {
                //verify first record
                if (dr != null) { dtpivot.Rows.Add(dr); }

                //inicialize the line
                student_id = drline["Id"].ToString();
                dr = dtpivot.NewRow();
                dr["Student_Name"] = drline["Name"].ToString();
                dr["Student_Id"] = drline["Id"].ToString();
            }

            //find columns for data - head and id
            index_column = this.find_index_column_list(list, drline["fee"].ToString());
            dr[index_column] = drline["fee"].ToString();
            dr[(index_column - 1)] = drline["fee_head"].ToString();
        }

        //verify last record
        if (dr != null) { dtpivot.Rows.Add(dr); }

    }
    catch (Exception ex)
    {
        //message error.
    }
}


这篇关于如何转换列数据表C#中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆