Когато извличам данни в моя DataSet
, колоната year
е третата колона в моя DataSet
. Нямам нужда от тази колона, след като я използвам, направете някои изчисления, така че я премахвам с помощта на метода 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
, което предполагам, че е проблемът, но не мога разберете как да го поправите, освен да направите клониране и импортиране.