C# DataSet效能最佳實踐

黄舟
發布: 2017-02-13 11:56:28
原創
2223 人瀏覽過

C# 效能最佳化細節

1、使用ItemArray實現對DataRow的批次賦值


。這時應盡量使用批次字段賦值。可以使用ItemArray或rows.Add方法:

/ ds是数据集(DataSet)对象
DataTable dt = ds.Tables[0];
DataRow row = dt.NewRow();
row.ItemArray = new object[] { value1, value2, …, valuen };
// ds是数据集(DataSet)对象
DataTable dt = ds.Tables[0];
dt.Rows.Add(value1, value2, …, valuen);
//应避免做大量连续的单列赋值,如下:
DataTable dt = ds.Tables[0];
DataRow row = dt.NewRow();
row["col1"] = value1;
row["col2"] = value2;
…
row["coln"] = valuen;
登入後複製


2、合理使用DataTable的並行計算



  • 效率的作用。

    IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录
    {
        DataTable dt = ItemDataTable;
        ……
        return dt.Select(“Quantity<0”); //未使用并行计算
    }
    IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录
    {
        DataTable dt = ItemDataTable;
        ……
        int index = dt.Columns.IndexOf("Quantity");
        return dt.AsEnumerable().AsParallel().Where(dr => (decimal)dr[index] < 0); //使用并行计算:
    }
    登入後複製


根據實驗,當對DataTable的行選擇時並行計算優於Select和循環過濾等方式;當進行行遍歷時類似。


  • 3、使用ImportRow實現向同結構DataTable合併
  • Mer範例如下:

    DataTable[] srcTables = ... ;
    foreach(DataTable src in srcTables )
    {	
    	dest.Merge( src ) ;
    }
    登入後複製

ImportRow也可以實現DataTable的合併操作,效能相比Merge高很多。程式碼範例如下:

DataTable[] srcTables = ... ;
foreach(DataTable src in srcTables )
{
  foreach(DataRow row in src.Rows)
  {
     dest.ImportRow( row ) ;      
  }
}
登入後複製


4、待續🎜🎜🎜🎜🎜🎜🎜以上是C# DataSetSet🎜🎜🎜🎜🎜以上是C# DataSetSet🎜、更多效能內容cn)! 🎜🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板