C#-比较两个CSV文件并给出输出

Vib*_*lux 1 c# csv

需要一点帮助,我有两个信息源,该信息通过不同的程序导出到两个不同的CSV文件中。它们应该包含相同的信息,但这是需要检查的信息。

因此,我想做的如下:

  • 从两个文件中获取信息。
  • 比较
  • 输出任何差异以及差异所在的文件。(例如,文件A包含此文件,但文件B没有,反之亦然)。

文件为200,000奇数行,因此需要尽可能有效。

但是,尝试使用Excel进行此操作太复杂了,我真的很难找到一种以编程方式找到方法。

Rya*_*ner 5

假设文件实际上是完全相同的,包括文本限定符,行的顺序和每个文件中包含的行数,那么最简单的方法可能是简单地将两个文件一起迭代并比较每一行。

using (StreamReader f1 = new StreamReader(path1))
using (StreamReader f2 = new StreamReader(path2)) {

    var differences = new List<string>();

    int lineNumber = 0;

    while (!f1.EndOfStream) {
        if (f2.EndOfStream) {
           differences.Add("Differing number of lines - f2 has less.");
           break;
        }

        lineNumber++;
        var line1 = f1.ReadLine();
        var line2 = f2.ReadLine();

        if (line1 != line2) {
           differences.Add(string.Format("Line {0} differs. File 1: {1}, File 2: {2}", lineNumber, line1, line2);
        }
    }

    if (!f2.EndOfStream) {
         differences.Add("Differing number of lines - f1 has less.");
    }
}
Run Code Online (Sandbox Code Playgroud)