1. 程式人生 > >C#DataTable那些事---速度優化

C#DataTable那些事---速度優化

序列化

DataTable是可序列化的,DataRow是不可序列化的,

當你使用JsonConvert..SerializeObject(DataRows)是得不到你想要的結果的,因為C#規定DataRow不可序列化。

查詢

     當你的DataTable中的資料非常大的時候,而你又需要迴圈Select的時候,不妨先把這個DataTable轉化為Dictionnary,再去select,這樣的查詢速度會大大提升。當需要迴圈m遍的時候,select時間複雜度是 n*m,那麼轉化過後就是n+m。原理是Dictionary本質上是一個hashMap.

     當你想要得到一條值的時候,使用DataRow.Find方法是最快的,比select快很多倍,不過Find方法需要建立主鍵索引。

合併

   當存在兩個相同結構的DataTable的時候,例如 data1,data2

    foreach(DataRow row in data1.Rows1){

      data2.Merge(row);

   }

   這種方式是非常慢的,

  推薦使用

    data2.ImportRow(row),這種是上面速度的100倍。