从数据表中删除列时出现奇怪的问题
本文关键字:问题 数据表 删除列 | 更新日期: 2023-09-27 17:59:49
我想从加载到数据表中的CSV文件中删除第三列之后的每一列,但我得到了奇怪的结果。这是我的密码。
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);
}
}
我的示例CSV文件:7列,我想保留前三列。
email,first,last,middle,nick,job,phone
roryok@fakedomain.com,rory,wally,ok,danger,developer,555-0123
这就是我得到的结果。
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);
}
这将遍历列的数量,并一次又一次地删除第三列,直到所有内容都消失。