Удалить последние n столбцов таблицы данных dt

Я копирую DataTable dt из DataTable dtOld, поэтому, когда я скопировал DataTable, у меня появилось несколько дополнительных столбцов, пожалуйста, посоветуйте, как сохранить n номеров столбцов и удалить остальные столбцы.

мой код:

private DataTable GetdtfromdtOld()
{
    DataTable dt = dtOld.Copy();

    dt.Columns["Column1"].SetOrdinal(0);
    dt.Columns["Column2"].SetOrdinal(1);

    dt.Columns["Column3"].SetOrdinal(2);
    dt.Columns["Column4"].SetOrdinal(3);

    dt.Columns["Column4"].SetOrdinal(4);
    dt.Columns["Column5"].SetOrdinal(5);
    dt.Columns["Column6"].SetOrdinal(6);

    dt.Columns["Column7"].SetOrdinal(7);
    dt.Columns["Column8"].SetOrdinal(8);

    dt.Columns["Column9"].SetOrdinal(9);
    dt.Columns["Column10"].SetOrdinal(10);

    dt.AcceptChanges();

    //Remove the Extra Column of dt
    for (int dtCol = dt.Columns.Count - 1; dt > 10; dtCol--)
    {
        Debug.WriteLine(dtCol);
        //Get the last Column
        //Column10 is name of last col in my code which has to be return 
        if (dt.Columns[dtCol].ColumnName != "Column10")
        {
            dt.Columns.RemoveAt(dtCol);
        }
        else
        {
            break;
        }
    }

    return dt;
}

что случилось с этим

BugFinder 23.04.2018 15:32

Что ж, если ExceptedLastColName - последний столбец, вы немедленно выйдете из цикла

Tim Schmelter 23.04.2018 15:37

Извините за недопонимание @TimSchmelter, «ExceptedLastColName» - это то, что я хочу сохранить в качестве последнего столбца в DataTable «dt», и это «Column10». Кстати, я решил свой код и успешно достиг ожидаемого столбца в моем DataTable 'dt'. и отредактировал вопрос в соответствии с моим кодом. Может ли кто-нибудь подсказать мне, как закрыть вопрос, поскольку я сам его решил.

Ankit Kumar Patel 24.04.2018 07:33

@AnkitKumarPatel: отправьте ответ и примите его. Что не так с мой подход?

Tim Schmelter 24.04.2018 09:25

Привет @Tim, Даже мой подход был неплохим, он работал ... так же, как и этот отредактированный. также в вашем подходе код показывает, что если код получит 'ExceptedLastColName', он пропустит этот столбец из-за ключевого слова 'continue'. Пожалуйста, проверьте и вернитесь. Спасибо

Ankit Kumar Patel 25.04.2018 12:40

@AnkitKumarPatel: ну, если нет проблем, вам не нужен этот вопрос. Вы сами решили это

Tim Schmelter 25.04.2018 12:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
76
1

Ответы 1

Проблема с вашим обратным циклом заключается в том, что вы выходите из него, как только найдете ExceptedLastColName, и вы комментируете, что это фактически последний столбец. Таким образом, вы немедленно выйдете из цикла.

Попробуй это:

for (int dtCol = dt.Columns.Count - 1; dt > 10; dtCol--)
{
    //ExceptedLastColName is name of last col in my code
    if (dt.Columns[dtCol].ColumnName == "ExceptedLastColName")
    {
        continue;
    }
    else
    {
        dt.Columns.RemoveAt(dtCol);
    }
}

Другие вопросы по теме