2012-09-18 37 views
1

我已經編寫了性能良好測試的代碼。如何使用ItemArray將空值插入DataTable

代碼

我劈裂一個逗號分隔字符串和DataTable行其分配給ItemArray。

DataRow dr = dt.NewRow(); 
var itemArray = processedUliValue.Split(','); 
dr.ItemArray = itemArray; 
dt.Rows.Add(dr); 

中的代碼後,我將這些itemArray值整數根據所選列名

那裏我得到異常,如果任何列是空的。

因此,我正在尋找設置空值爲空時分配itemArray,我試圖在逗號分隔的字符串中使用DBNull.Value但它沒有采取null,我也試過null,但也沒有奏效。

有什麼辦法來分配使用此逗號分隔字符串ItemArray空?

回答

4

看起來像你的專欄,其中你想存儲DbNull.Value到,不允許空值。這適用於我:

 var dt = new DataTable 
     { 
      Columns = 
       { 
        new DataColumn("Id", typeof(int)), 
        new DataColumn("FirstName", typeof(string)) { AllowDBNull = true }, 
        new DataColumn("LastName", typeof(string)) { AllowDBNull = true }, 
       } 
     }; 

     var row = dt.NewRow(); 

     row.ItemArray = "1,,Jones".Split(',').Select(s => string.IsNullOrEmpty(s) ? (object)DBNull.Value : (object)s).ToArray(); 

     dt.Rows.Add(row); 
+0

我會嘗試,但似乎這是最好的答案 –

0

爲什麼不檢查列值是否爲空之前,將其轉換爲int?這種方式似乎更簡單。

+0

對於我已經寫額外的代碼來分割字符串,並指定每個列的值,並檢查空,我有很多列,我要找更簡單的方法來做到這一點 –