0

当我将数据检索到我DataSet的 中时,该year列是我的第 3 列DataSet。使用此列后我不需要此列进行一些计算,因此我使用将Remove列名称传递给方法的方法将其删除Remove。问题是我在foreach循环中检索数据,所以当我再次检索数据时,该year列现在是最后一列,DataSet当我尝试访问它时,它会抛出一个错误,提示year找不到列。我解决这个问题的方法是将 by 克隆DataSet到 aDataTable中,然后将数据集中的每一行导入到 myDataTable中,但是有没有更有效的方法或方法可以将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,我认为这是问题,但无法弄清楚如何除了进行克隆和导入之外,还要修复它。

4

1 回答 1

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");
于 2012-09-20T03:54:04.023 回答