每行校对 .CSV

Proof Reading .CSV per line

CSVHelper 和 FileHelper 不是一个选项

我有一个 .csv 导出文件,我需要检查其结构的一致性,如下所示

Reference,Date,EntryID

ABC123,08/09/2015,123

ABD234,08/09/2015,124

XYZ987,07/09/2015,125

QWE456,08/09/2016,126

我可以使用 ReadLineRealAllLines.Split 给我整个 rows/columns 但我需要 select 每行然后通过每个属性(以','分隔)用于格式检查

我 运行 遇到了这里的问题。对于此检查,我无法连续挑出每个值。 它可能是

上的一些简单的东西
 class Program
{
    static void Main(string[] args)
    {
        string csvFile = @"proof.csv";
        string[] lines = File.ReadAllLines(csvFile);


        var values = lines.Skip(1).Select(l => new { FirstRow = l.Split('\n').First(), Values = l.Split('\n').Select(v => int.Parse(v)) });
        foreach (var value in values)
        {
            Console.WriteLine(string.Format("{0}", value.FirstRow));
        }
    }
}

或者我走错了路,我的搜索涉及提取特定的行或列(而不是检查相关的单个值)

上面的数据示例有一个突出显示的示例:日期是明年,我希望能够证明该值(只是一个示例,因为它可能出现在出现错误的任一列中)

I can not single out each value in a row

那是因为你在 \n 分裂了两次。一行中的值以逗号分隔 (,)。

我不确定 LINQ 应该做什么,但就这么简单:

string[] lines = File.ReadAllLines(csvFile);

foreach (var line in lines.Skip(1))
{
    var values = line.Split(',');
    // access values[0], values[1] ...
}

而不是通过 OLEDB 对象读取它作为文本读取,因此 CSV 文件的数据将进入数据表,您不需要吐出它。

要读取 csv 文件,您可以使用这些 OLEDB 对象

System.Data.OleDb.OleDbCommand 
System.Data.OleDb.OleDbDataAdapter
System.Data.OleDb.OleDbConnection

System.Data.DataTable