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()
の列として配置します。これが問題であると想定していますが、方法がわかりませんクローンとインポートを行う以外に修正するには。Year
DataSet