簡體   English   中英

在強類型數據集中刪除列時出錯?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM