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

标签 c# csv

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

因此我想做的事情如下:

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

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

尝试使用 Excel 执行此操作,但事实证明太复杂了,我真的很难找到一种编程方式。

最佳答案

假设文件真的应该相同,直到文本限定符、行的顺序以及每个文件中包含的行数,最简单的方法可能是简单地遍历两者将文件放在一起并比较每一行。

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.");
    }
}

关于C# - 比较两个 CSV 文件并给出输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458355/

相关文章:

vba - 处理一个单元格中的多个值以导出为 CSV

c# - 处理 Windows Phone 8 silverlight 中的客户端 SSL 证书错误

c# - netstandard 代码生成器 Microsoft.Data.SqlClient 抛出 FileNotFound System.Security.Principal.Windows,Version=4.1.1.0

c# - 如何在 ASP.NET Core Angular 应用程序中使用 SignalR Stream?

php - CSV 到 Mysql 导入脚本以匹配字段

php - 如何在 IE (PHP) 中下载服务器文件的更新版本?

python - 如何将具有一列的 csv 文件转换为 Python 中的字典?

c# - 如何控制gridview中的列宽?

c# - COM 返回不实现任何接口(interface)的类型

python - float() : 0. 000001 的无效文字,如何修复错误?