从csv文件中删除一些以逗号分隔的标头值,并在C#中从该csv创建一个数据表

yuvru6vn  于 2022-12-06  发布在  C#
关注(0)|答案(2)|浏览(140)

我有一个非常大的csv文件(超过12 K行);

Comment, DateTime   Name,  Age,  Class, Place,  --> these are the header columns
    Good,    03/10/2022, John,  12,    3,     UK,
    Bad,     12/10/2022, Tom,   15,    2,     US

这是一个显示列名称的一般化示例。但有时会比此列更多。
我正在阅读它,如下所示

List<string> lines = File.ReadAllLines(System.IO.Path.ChangeExtension(FileNameWithPath, ".csv")).ToList();

我需要一个数据表从上述csv文件,但我不想评论地方列在数据表。
有谁能告诉我我们如何才能做到这一点?
列数据类型:

DateTime --> typeof(datetime)

       Name     --> typeof(string)

       Age --> typeof(double?)

       Class  --> typeof(int)
67up9zun

67up9zun1#

在从列表转换为数据表之后,可以使用DataColumnCollection.Remove()删除这些列。
dt.Remove("Comments")

jdgnovmf

jdgnovmf2#

public static DataTable CSVtoDataTable(string filePath)
  {
    DataTable dtData = new DataTable();
    using (StreamReader sReader = new StreamReader(filePath))
    {
        string[] columnHeader = sReader.ReadLine().Split(',');
        foreach (string header in columnHeader)
        {
            dtData.Columns.Add(header);
        }
        while (!sReader.EndOfStream)
        {
            string[] rows = sReader.ReadLine().Split(',');
            DataRow drRow = dtData.NewRow();
            for (int i = 0; i < columnHeader.Length; i++)
            {
                drRow[i] = rows[i];
            }
            dtData.Rows.Add(drRow);
        }

    }

    dtData.Columns.Remove("Comment");
    dtData.Columns.Remove("Place");
        return dtData;
   }

相关问题