2011-06-16 81 views
3

IM通過數據集試圖環和地方曾經有一個0我想改變這種狀況爲空值或空白到目前爲止,我有這個如何通過數據集和更改數據的C#循環

foreach (DataRow drRow in ds.Tables[0].Rows) 
{    
    //loop through cells in that row 
     { 
     //if the value is 0 change to null or blank 
     } 
} 

能任何人都可以幫我解決這個問題嗎?

+0

如果任務是取代所有的zeroe用'NULL'寫出SQL UPDATE語句並執行腳本。將數據加載到'dataset'中的目的是什麼?爲什麼你使用C#。 IMO SQL腳本是更好的解決方案 – 2011-06-16 12:28:26

回答

3

當然

foreach (DataRow drRow in ds.Tables[0].Rows) 

    { 
     for(int i = 0; i < ds.Tables[0].Columns.Count; i++) 
     { 
      int rowValue; 

      if (int.TryParse(drRow[i].ToString(), out rowValue)) 
      { 
       if (rowValue == 0) 
       { 
        drRow[i] = null; 
       } 
      } 

     } 
    } 

我真的相信,沒有人仍與數據集:(

+0

仍然有一些DataSet是有效選項的情況。 – thekip 2011-06-16 12:33:13

+0

只是例如? – Restuta 2011-06-16 12:34:26

+0

im使用數據集的唯一原因是我試圖連接到Interbase數據庫並操縱數據,然後在圖表和網格視圖中顯示新數據。你能否提出一個更好的方法來做到這一點? – c11ada 2011-06-16 12:34:58

0

像這樣的東西可能有幫助的工作原理:

foreach (DataRow rows in table.Rows) 
{ 
    object value = null; 
    var cells = rows.ItemArray; 
    for (int i = 0; i < cells.Length; i++) 
    { 
     value = cells[i]; 
     if (value != null && value.GetType() == typeof(int)) 
     { 
      if ((int)value == 0) 
      { 
       cells[i] = null; 
      } 
     } 
    } 
    rows.ItemArray = cells; 
} 
0

你可以做

DataTable dt = new DataTable(); 
..... 
..... 

    DataRowCollection drColl = dt.Rows; 
       for(int j=0; j<drColl.Count;j++) 
       { 
        DataRow drRow = drColl[j]; 
        object[] itemArr = null; 
        itemArr = drRow.ItemArray; 
        //loop through cells in that row  
        for(int i=0; i<itemArr.Length; i++) 
        {   
         //if the value is 0 change to null or blank 
         if (itemArr[i].ToString() == "0") 
          drRow[i] = ""; 
        } 
       }