首頁  >  文章  >  後端開發  >  C# DataSet效能最佳實踐

C# DataSet效能最佳實踐

黄舟
黄舟原創
2017-02-13 11:56:282209瀏覽

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)! 🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn