C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法
更新時間:2015年04月27日 14:33:59 作者:lele
這篇文章主要介紹了C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法,實例分析了C#操作DataTable的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
本文實例講述了C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable tt = GetCrossTable(CreateDT()); GridView1.DataSource = tt; GridView1.DataBind(); } } //創(chuàng)建DataTable protected DataTable CreateDT() { DataTable tblDatas = new DataTable("Datas"); //數(shù)據(jù)列 tblDatas.Columns.Add("姓名", Type.GetType("System.String")); tblDatas.Columns.Add("科目", Type.GetType("System.String")); tblDatas.Columns.Add("分數(shù)", Type.GetType("System.Int32")); tblDatas.Rows.Add(new object[] { "張三", "語文", 89 }); tblDatas.Rows.Add(new object[] { "張三", "數(shù)學(xué)", 90 }); tblDatas.Rows.Add(new object[] { "張三", "英語", 79 }); tblDatas.Rows.Add(new object[] { "張三", "地理", 70 }); tblDatas.Rows.Add(new object[] { "張三", "生物", 95 }); tblDatas.Rows.Add(new object[] { "李四", "語文", 87 }); tblDatas.Rows.Add(new object[] { "李四", "英語", 86 }); tblDatas.Rows.Add(new object[] { "李四", "地理", 82 }); tblDatas.Rows.Add(new object[] { "王五", "語文", 81 }); tblDatas.Rows.Add(new object[] { "王五", "數(shù)學(xué)", 70 }); tblDatas.Rows.Add(new object[] { "王五", "英語", 88 }); tblDatas.Rows.Add(new object[] { "王五", "生物", 96 }); return tblDatas; } /// <summary> /// 將DataTable的第二列的值轉(zhuǎn)化為列 //(即將原來的行表,轉(zhuǎn)化成交叉表,沒有對應(yīng)值則默認"0") /// </summary> /// <param name="dt">必須三列,第三列為值</param> /// <returns></returns> public static DataTable GetCrossTable(DataTable dt) { if (dt == null || dt.Columns.Count != 3 || dt.Rows.Count == 0) { return dt; } else { DataTable result = new DataTable(); result.Columns.Add(dt.Columns[0].ColumnName); DataTable dtColumns = dt.DefaultView.ToTable("dtColumns", true, dt.Columns[1].ColumnName); for (int i = 0; i < dtColumns.Rows.Count; i++) { string colName; if (dtColumns.Rows[1][0] is DateTime) { colName = Convert.ToDateTime(dtColumns.Rows[i][0]).ToString(); } else { colName = dtColumns.Rows[i][0].ToString(); } result.Columns.Add(colName); result.Columns[i + 1].DefaultValue = "0"; } DataRow drNew = result.NewRow(); drNew[0] = dt.Rows[0][0]; string rowName = drNew[0].ToString(); foreach (DataRow dr in dt.Rows) { string colName = dr[1].ToString(); double dValue = Convert.ToDouble(dr[2]); if (dr[0].ToString().Equals(rowName, StringComparison.CurrentCultureIgnoreCase)) { drNew[colName] = dValue.ToString(); } else { result.Rows.Add(drNew); drNew = result.NewRow(); drNew[0] = dr[0]; rowName = drNew[0].ToString(); drNew[colName] = dValue.ToString(); } } result.Rows.Add(drNew); return result; } }
希望本文所述對大家的C#程序設(shè)計有所幫助。
您可能感興趣的文章:
- C#中把Datatable轉(zhuǎn)換為Json的5個代碼實例
- C# DataTable 轉(zhuǎn)換為 實體類對象實例
- c#將list類型轉(zhuǎn)換成DataTable方法示例
- C#將DataTable轉(zhuǎn)換成list的方法
- C#操作EXCEL DataTable轉(zhuǎn)換的實例代碼
- C#中的DataSet、string、DataTable、對象轉(zhuǎn)換成Json的實現(xiàn)代碼
- C#實現(xiàn)將json轉(zhuǎn)換為DataTable的方法
- c# DataTable與不同結(jié)構(gòu)實體類轉(zhuǎn)換的方法實例
- C#將DataTable轉(zhuǎn)化為List<T>
- C#中DataTable導(dǎo)出為HTML格式的方法
相關(guān)文章
C# Winform按鈕中圖片實現(xiàn)左圖右字的效果實例
這篇文章主要給大家介紹了關(guān)于C# Winform按鈕中圖片實現(xiàn)左圖右字效果的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11C# 對Outlook2010進行二次開發(fā)的圖文教程
下面小編就為大家分享一篇C# 對Outlook2010進行二次開發(fā)的圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12C#實現(xiàn)目錄跳轉(zhuǎn)(TreeView和SplitContainer)的示例代碼
本文主要介紹了C#實現(xiàn)目錄跳轉(zhuǎn)(TreeView和SplitContainer)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實例方法
在本篇文章里小編給大家整理的是關(guān)于C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實例方法,需要的朋友們參考下。2019-10-10