以前一直覺得泛型比較好用,一直沒使用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 ...