C# 从数据表中删除列时出现奇怪的问题

C# 从数据表中删除列时出现奇怪的问题,c#,csv,datatable,C#,Csv,Datatable,我想从加载到datatable中的CSV文件中删除第3列之后的每一列,但得到的结果很奇怪。这是我的密码 System.Data.DataTable csv_datatable = null; using (System.IO.StreamReader re = new System.IO.StreamReader(model.file.InputStream)) { csv_datatable = CsvParser.Parse(re as System.IO.TextReader);

我想从加载到datatable中的CSV文件中删除第3列之后的每一列,但得到的结果很奇怪。这是我的密码

System.Data.DataTable csv_datatable = null;
using (System.IO.StreamReader re = new System.IO.StreamReader(model.file.InputStream))
{
    csv_datatable = CsvParser.Parse(re as System.IO.TextReader);
    for (int x = 3; x < csv_datatable.Columns.Count + 1; x++)
    {
        csv_datatable.Columns.RemoveAt(x);
    }
}
这就是我得到的结果

email,first,last,nick,phone
roryok@fakedomain.com,rory,ok,danger,555-0123

正如您所看到的,代码实际上删除了第4列和第6列,而不是像我预期的那样删除最后一列

像往常一样,在我发布的时候就发现了这一点,但无论如何我都会发布解决方案,以防它对某人有所帮助

删除每列后,每列的索引都会更改。因此,当您删除第3列时,4将成为新的3。此代码适用于:

for (int x = 0; x < csv_datatable.Columns.Count; x++)
{
    csv_datatable.Columns.RemoveAt(3);
}     
for(int x=0;x
这将遍历列的数量,并一次又一次地删除第三列,直到所有内容都消失

for (int x = 0; x < csv_datatable.Columns.Count; x++)
{
    csv_datatable.Columns.RemoveAt(3);
}