2010-01-28 35 views
1

我有一個數據集數據表3中,有許多領域與具有零,現在我想轉換具有零NULL字段。任何想法,請幫助。轉換零到數據集或數據表無效

+3

請郵寄到現在爲止您編寫的代碼。人們通常不喜歡只爲你寫代碼。 – 2010-01-28 05:48:10

回答

1

當然,理論上講,你可以遍歷整個DataSet,查找零值,並用NULL值(以.NET表示爲DBNull.Value)代替它們。 (參見下面的代碼示例。)

然而,注意,這可能是非常低效的,特別是具有大DataSet。恕我直言,最好避免這種情況,並讓數據庫從一開始就提供正確的數據。

這就是說,下面應該讓你開始你如何可以遍歷整個DataSet和替換零個值:

DataSet ds = ...; 

foreach (var dt in ds.Tables) 
{ 
    foreach (var dr in dt.Rows) 
    { 
     foreach (var dc in dt.Columns) 
     { 
      if (dr[dc].GetType() == typeof(int) && (int)dr[dc] == 0) 
      // the above condition might have to be more flexible, 
      // e.g. in order to also account for other integer types. 
      { 
       dr[dc] = DBNull.Value; 
      } 
     } 
    } 
} 

附::爲了使這一點更有效,你可以先篩選各個DataTable的列,以便在最裏面的循環中,您將只處理整數列。

+0

我這樣做,但它是有點費時的表是巨大的.... 我想要的東西,當使用select查詢的excel表我想轉換零爲空,以減少創建的XML的大小有如在數據集外 從[WK11 GAAP IS詳細信息$ C4:EX135]中選擇* – Sathish 2010-01-28 06:09:05

+0

那麼也許您應該使用'IDataReader'手動(逐行)手動(逐行)構建您的DataSet(或更確切的說是DataTable對象) (也可能是'IDataAdapter')。這將允許你在正確的數據,你從數據庫中讀取轉換的'DataTable's,而不必做就地更換的第2次以後。 – stakx 2010-01-28 06:11:58

+0

感謝您的諮詢 – Sathish 2010-01-28 06:26:22