Я копирую 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;
}
Что ж, если ExceptedLastColName - последний столбец, вы немедленно выйдете из цикла
Извините за недопонимание @TimSchmelter, «ExceptedLastColName» - это то, что я хочу сохранить в качестве последнего столбца в DataTable «dt», и это «Column10». Кстати, я решил свой код и успешно достиг ожидаемого столбца в моем DataTable 'dt'. и отредактировал вопрос в соответствии с моим кодом. Может ли кто-нибудь подсказать мне, как закрыть вопрос, поскольку я сам его решил.
@AnkitKumarPatel: отправьте ответ и примите его. Что не так с мой подход?
Привет @Tim, Даже мой подход был неплохим, он работал ... так же, как и этот отредактированный. также в вашем подходе код показывает, что если код получит 'ExceptedLastColName', он пропустит этот столбец из-за ключевого слова 'continue'. Пожалуйста, проверьте и вернитесь. Спасибо
@AnkitKumarPatel: ну, если нет проблем, вам не нужен этот вопрос. Вы сами решили это





Проблема с вашим обратным циклом заключается в том, что вы выходите из него, как только найдете 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);
}
}
что случилось с этим