[英]Error when removing column in strongly-typed dataset?
當我將數據檢索到我的DataSet
,該year
列是我的第三列DataSet
。 使用此列后,不需要進行一些計算,因此我使用Remove
方法將列名傳遞給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
中的定義位置,但除了克隆和導入外,無法解決該問題。
最好發表評論,但是我想利用代碼樣式,而且很難說出在不看代碼的情況下到底想要實現什么,
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.