c 快速去掉DataTable 內容中 前後空格

2021-10-09 15:39:58 字數 2653 閱讀 3618

一直一來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...