【问题标题】:Weird issue when removing columns from a datatable从数据表中删除列时出现奇怪的问题
【发布时间】:2014-04-24 16:32:45
【问题描述】:

我想从加载到数据表中的 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 列。

【问题讨论】:

    标签: c# csv datatable


    【解决方案1】:

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

    随着每一列的删除,每一列的索引都会发生变化。因此,当您删除第 3 列时,第 4 列变为新的 3。此代码有效:

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

    这将遍历列数,并一遍又一遍地删除第三列,直到所有内容都消失。

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2011-09-09
      • 2022-01-24
      相关资源
      最近更新 更多