C# 从StreamReader读取时,如何跳过csv数据中的标题?

C# 从StreamReader读取时,如何跳过csv数据中的标题?,c#,csv,C#,Csv,编辑: 我有以下代码: private void button1_Click_1(object sender, EventArgs e) { var date = new List<String>(); var value = new List<Double>(); string dir = @"C:\Main\test.csv"; using (var reader = new System.IO.StreamReader(dir))

编辑:

我有以下代码:

private void button1_Click_1(object sender, EventArgs e)
{
    var date = new List<String>();
    var value = new List<Double>();

    string dir = @"C:\Main\test.csv";

    using (var reader = new System.IO.StreamReader(dir))
    {
         var lines = File.ReadLines(dir)
                        .Skip(1);//Ignore the first line

            foreach (var line in lines)
            {
                var fields = line.Split(new Char[] { ';' },   StringSplitOptions.RemoveEmptyEntries);
                date.Add(fields[0]);
                if (fields.Length > 1)
                    value.Add(Convert.ToDouble(fields[1]));
            }


    String[] _date = date.ToArray();
    Double[] _value = value.ToArray();


    chart1.Series["Test"].Points.DataBindXY(_date,_value);
    chart1.Series["Test"].ChartType = SeriesChartType.Spline;
  }
}
现在我想跳过csv数据的标题。这意味着第一列的第一行和第二列的第一行。怎么做

标题是字符串。当没有标题时,他将跳过第一行,但对于标题,我会得到一个System.FormatException

当第一行第一列包含日期,第二列包含值(如使用texteditor打开的值)时失败:

日期;价值观

2010年4月20日;82.6619508214314

2010年4月21日;33.2262968571519

2010年4月22日;25.0174973120814


为什么不从读一行开始,什么也不做呢

using (var reader = new System.IO.StreamReader(dir))
{
    reader.ReadLine(); // skip first

    string line;
    while ((line = reader.ReadLine()) != null)
    {
    }
}

为什么不从读一行开始,什么也不做呢

using (var reader = new System.IO.StreamReader(dir))
{
    reader.ReadLine(); // skip first

    string line;
    while ((line = reader.ReadLine()) != null)
    {
    }
}

在执行while循环之前添加一个reader.ReadLine

using (var reader = new System.IO.StreamReader(dir))
{
    if (reader.ReadLine()) //read first line
    {
     string line;
     while ((line = reader.ReadLine()) != null) //read following lines
     {
     }
    }
}

在执行while循环之前添加一个reader.ReadLine

using (var reader = new System.IO.StreamReader(dir))
{
    if (reader.ReadLine()) //read first line
    {
     string line;
     while ((line = reader.ReadLine()) != null) //read following lines
     {
     }
    }
}

这意味着第一列的第一行和第二列的第一行。所以第一排,;在while循环之前,只需添加reader.readline,即第一列的第一行和第二列的第一行。所以第一排,;在您的while循环之前,只需添加reader.readline当其中有字符串时,为什么他不想跳过该行?问题应该是第二列,因为它会转换为double,否则会work@uzi42tmp:能否在帖子中显示失败的示例文档?第一行-第一列为日期,第一行第二列为Value@uzi42tmp:好的,他们被引用了。然后执行字段[0]。修剪“\”和字段[1].Trim“\”。我明天可以试试,然后我回答为什么他不想在有字符串的情况下跳过这一行,问题应该是第二列,因为它被转换为double-否则会work@uzi42tmp:能否在帖子中显示失败的示例文档?第一行-第一列为日期,第一行第二列为Value@uzi42tmp:好的,他们被引用了。然后执行字段[0]。修剪“\”和字段[1]。修剪“\”。我明天可以试试,然后回答