my にデータを取得するDataSetと、year列は my の 3 番目の列になりますDataSet。この列を使用した後は必要ないので、いくつかの計算を行うためRemove、列の名前をメソッドに渡すメソッドを使用して削除しますRemove。問題は、foreachループでデータを取得することです。そのため、データを再度取得すると、year列が最後の列になり、DataSetアクセスしようとすると、year列が見つからないというエラーがスローされます。これを回避する私の方法は、 by に複製しDataSetてDataTableから、各行をデータセットから my にインポートすること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()の列として配置します。これが問題であると想定していますが、方法がわかりませんクローンとインポートを行う以外に修正するには。YearDataSet