一直一來data table 都是for 迴圈一條條,乙個乙個column的的for 下去進行 trim,
發現這個做法非常非常影響效率,只要datatable裡面有1000條記錄,然後column超過 20條個,
format的trim的效率就非常慢。
if (olddtable.rows[k][j] != null)
olddtable.rows[k][j] = olddtable.rows[k][j].tostring().trim();
break;
case "string": //字元型去空
if (olddtable.rows[k][j] != null)
olddtable.rows[k][j] = olddtable.rows[k][j].tostring().trim();
break;
case "datetime"://日期型別
/** 日期1970-01-01,是乙個真實的存在,不能去掉為 dbnull
if (((datetime)(olddtable.rows[k][j])).tostring("yyyy-mm-dd") == "1970-01-01")
olddtable.rows[k][j] = dbnull.value;
*/break;}}
}}catch
return olddtable;
#endregion
-----偶然發現,可以使用表示式
newcol.expression = "trim([" + pcol.columnname + "])";
於是想到可以利用newdtres.defaultview.totable(false, columnlist); 和上面的做法進行結合,快速處理出 去掉內容前後空白的做法。
1)copy 新column標記_forjb
2) view to table 到新datatable
3) 新datatable 去掉標記_forjb回到最初的datatable結構。
上最終函式,使用的時候記得備註** [email protected],方面我在虛擬世界裡面立個flag,thanks.
datacolumn builddatacolumn(datacolumn pcol, bool pistrim)
}else
return newcol;
}datacolumn buildrestoredatacolumn(datacolumn pcol)
newcol.expression = pcol.columnname;
return newcol;
}dictionarydiccoll = new dictionary();
dictionarydicallcoll = new dictionary();
///
/// 上面的屬性開放 enabled datagrid format 有處理這個情況,開放屬性就就可以了
///
///
public datatable trimvalueforoutput(ref datatable pdt)
;string columnliststr = "";
if (diccoll.count == 0)
_", colindex, col.columnname);
if (col.datatype.name == "decimal"
|| col.datatype.name == "string")}}
//all
datacolumn coll = new datacolumn ;
foreach (datacolumn col in pdt.columns)
_", colindex, col.columnname);
dicallcoll.add(key, col);
//columnindex++; }}
datatable newdt = pdt.copy();
foreach (var col in dicallcoll)
else
}columnlist = columnliststr.split(new char , stringsplitoptions.removeemptyentries);
datatable newdt2 = newdt.defaultview.totable(false, columnlist);
columnliststr = "";
datatable newdtres = newdt2.copy();
foreach (datacolumn col in newdt2.columns)
columnlist = columnliststr.split(new char , stringsplitoptions.removeemptyentries);
newdtfinal = newdtres.defaultview.totable(false, columnlist);
if (newdtfinal != null && newdtfinal.rows.count == pdt.rows.count)
utils.closewaitdialog();
return newdtfinal;
}catch
}
3種方法教你PS快速去掉水印
方法一 使用選框工具 勾選水印部分 按住shift f5選擇內容識別 然後 ctrl d 取消選擇,水印就去掉了 ps 其實這個方法有個快捷辦法,直接使用選框工具選中之後,按delete就可以彈出這個框,選擇內容識別,回車就可以了。方法二 使用修補工具快速去水印 按住滑鼠左鍵,將水印選上,滑鼠左鍵按...
快速去掉 WordPress 3 1 的工具欄
更新到 wordpress 3.1 版本的朋友們,可能發現最大的改善就是多了乙個工具欄,它可以提供比較便www.cppcns.com捷的功能,如果你不是很喜歡的話,可以在後台設定將其去掉。網上說的比較多的辦法是通過改 實現的,園子今天在無意間發現在後台就有這項設定。通過簡單的勾選就可以去掉這項有點 ...
C 快速匯出DataTable到Excel檔案
專案中需要將datatable中的內容匯出到excel檔案中,採用迴圈的方式逐個cell寫資料到excel檔案中,如下 把資料表的內容匯出到excel檔案中 public static void outdatatoexcel2 system.data.datatable srcdatatable,s...