C# 删除数据表dt的最后n列
我正在从DataTable dtOld复制DataTable dt,因此当我复制DataTable时,我得到了一些额外的列,请建议如何保留列的n个数并删除其余列 我的代码:C# 删除数据表dt的最后n列,c#,asp.net,datatable,C#,Asp.net,Datatable,我正在从DataTable dtOld复制DataTable dt,因此当我复制DataTable时,我得到了一些额外的列,请建议如何保留列的n个数并删除其余列 我的代码: private DataTable GetdtfromdtOld() { DataTable dt = dtOld.Copy(); dt.Columns["Column1"].SetOrdinal(0); dt.Columns["Column2"].SetOrdinal(1); dt.Co
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
并注释这实际上是最后一列,就退出它。因此,您将立即退出循环
试试这个:
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);
}
}
这有什么错呢?如果
ExceptedLastColName
是最后一列,您将立即退出循环,很抱歉误解@TimSchmelter,“ExceptedLastColName”是我想要保留的数据表“dt”中的最后一列,它是“Column10”。顺便说一句,我已经解决了我的代码,并成功地实现了我的数据表“dt”中预期的col。并根据我的代码编辑了问题。有谁能建议我如何结束这个问题,因为我已经自己解决了。@AnkitKumarPatel:发布一个答案并接受它。出什么问题了?嗨@Tim,即使我的方法也不错,很有效。。。这本编辑过的书也是如此。此外,在您的方法中,您的代码显示,如果代码获得'ExceptedLastColName',它将跳过该列,因为'continue'关键字。请检查并回复。谢谢