Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除数据表dt的最后n列_C#_Asp.net_Datatable - Fatal编程技术网

C# 删除数据表dt的最后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

我正在从DataTable dtOld复制DataTable dt,因此当我复制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
并注释这实际上是最后一列,就退出它。因此,您将立即退出循环

试试这个:

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'关键字。请检查并回复。谢谢