Грешка при премахване на колона в строго типизиран набор от данни?

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


person Xaisoft    schedule 20.09.2012    source източник
comment
Опитвате ли се да премахнете колоната в рамките на цикъла foreach и отново да извлечете стойността на колоната? може ли да публикувате някакъв код?   -  person Amir Rezvani    schedule 20.09.2012
comment
@CjCoax - Да, в момента нямам код със себе си, но ще го публикувам по-късно, но това, което казахте, е точно това, което правя.   -  person Xaisoft    schedule 20.09.2012


Отговори (1)


sqrt(log n) = (log n)^ (1/2) = (1/2) * (log n)
person Amir Rezvani    schedule 20.09.2012
comment
Съжалявам, говорих скоро. Данните не се извличат в цикъл foreach, ще публикувам някакъв код. - person Xaisoft; 20.09.2012