2012-09-20 57 views
0

當我將數據檢索到我的DataSet時,year列是我的DataSet中的第3列。在使用它之後,我不需要這個列來進行一些計算,所以我使用Remove方法將該列的名稱傳遞給Remove方法將其刪除。問題是我檢索foreach循環中的數據,所以當我再次檢索數據時,year列現在是DataSet中的最後一列,當我嘗試訪問它時,它會拋出一個錯誤,說明找不到year列。我的解決方法是將DataSet複製到DataTable中,然後將每行從數據集導入我的DataTable,但是有沒有更高效的方法或將year列保留在原始位置的方法。刪除強類型數據集中的列時出錯?

private int GetData() 
{ 
    dataSet.GetExportData(); 

    DataTable dt = dataSet.ExportData; 

    for(int i = 0; i <dataSet.ExportData; i++) 
    { 
     //Do Stuff 
    } 

    dataSet.Columns.Remove(dataSet.ExportData.YearColumn.ColumnName); 
} 

在上面的代碼,當我打開一個對話框,選擇要導出數據,它的工作原理是第一次,但是如果我離開對話框打開,單擊按鈕再次導出,它拋出的錯誤。如果我關閉對話框並重新打開,它可以正常工作。正如我之前說的,我注意到當它再次檢索數據按鈕點擊dataSet.GetExportData()時,它把Year列作爲最後一列,而不是強類型的DataSet中定義的位置,我認爲這是問題,但不能弄清楚除了做一個克隆和導入之外如何解決它。

+0

您是否試圖刪除foreach循環內的列,並再次檢索列的值?你可以發佈一些代碼嗎? – CjCoax

+0

@CjCoax - 是的,我現在沒有編碼,但稍後會發布,但你所說的正是我所做的。 – Xaisoft

回答

0

它最好能夠在發表評論,但我想利用代碼的造型,也很難說你想達到什麼不瞄準的代碼,

foreach (DataRow row in myTable.Rows) 
    { 
     //do something with year column 
     myTable.Columns.Remove("year"); 
    } 

上面的代碼工作在第一次迭代中很好,但之後會失敗,因爲myTable.Columns.Remove("year")從表中刪除整列,而不僅僅是從當前行開始,並給出:You'll get Column 'year' does not belong to table Table.異常。

爲什麼不把myTable.Columns.Remove("year");排除在foreach之外呢?

foreach (DataRow row in myTable.Rows) 
    { 
     //do something with year column 
    } 

    myTable.Columns.Remove("year"); 
+0

對不起,我很快就說過了。數據不在foreach循環中檢索,我會發布一些代碼。 – Xaisoft

+0

更新後的代碼。 – Xaisoft