DataTable將行轉成列

2022-05-30 01:51:12 字數 2234 閱讀 2672

以前一直覺得泛型比較好用,一直沒使用datatable,最近發現泛型也不是萬能的,比如將行轉成列。

雖然這種在前台js轉比較方便,但可能也需要這樣的介面,提供別人呼叫,還是記錄一下。

//

/ //

/ 將行轉成列

/// datatable dtresult = utility.convertdatatabletovertical(dt, "id", new string, new string );

///

/// 資料來源

/// 唯一標示列

/// 要轉成表頭的列

/// 資料行

/// 剩下的要顯示的行

/// public static datatable convertdatatabletovertical(datatable dt, string rowkeyarray, string columnkeyarray, string valuekeyarray, listpreservecolumnarray)

preservecolumnarray.add(column.tostring());}}

var columns = (from r in dt.asenumerable() select getstringfromdatarow(r, columnkeyarray)).where(r => !string.isnullorempty(r)).distinct().orderby(r =>r).toarray();

var columncount = columns.length * valuekeyarray.length +preservecolumnarray.count;

dictionary

rows = new dictionary();

foreach (datarow dr

indt.rows)

}for (var i = 0; i < columns.length; i++)

break

; }}}

foreach (

var column in

preservecolumnarray)

foreach (

var column in

columns)

else}}

foreach (

var keyvaluepair in

rows)

return

dtresult;

}

public static string getstringfromdatarow(datarow dr, string keys)

}if (strresult.length > 0)

return

strresult;

}

經常得到的是list,發現不會轉成行顯示(後台),只能先轉成datatable了。。。

//

/ //

/ 將泛型別集合list類轉換成datatable

///

/// 泛型別集合

/// public static datatable listtodatatable(listentitys)

//取出第乙個實體的所有propertie

type entitytype = entitys[0].gettype();

propertyinfo entityproperties =entitytype.getproperties();

//生成datatable的structure

//生產**中,應將生成的datatable結構cache起來,此處略

datatable dt = new

datatable();

for (int i = 0; i < entityproperties.length; i++)

//將所有entity新增到datatable中

foreach (object entity in

entitys)

object entityvalues = new

object[entityproperties.length];

for (int i = 0; i < entityproperties.length; i++)

dt.rows.add(entityvalues);

}return

dt; }

新增datatable的行和列

為資料集新增列 table.columns.add new datacolumn jystate typeof string 為資料集新增行 datarow dr dtnew.newrow gongzuodidian string.empty gongzuoxiangmu string.empty ...

將字串轉成列

declare sql varchar 300 i int,n int,a int set a 1 set sql 123 abc ccc set n len sql len replace sql,set i 1 while a n begin select substring sql,i,pat...

獲取DataTable列集合與行集合

獲取datatable列集合與行集合 var dd 建立表.columns.cast toarray var aa 建立表.rows.cast toarray 0 itemarray foreach datarow aaaa in aa messagebox.show aaaa.itemarray ...