IEnumerable文件比较

时间:2019-04-05 05:35:37

标签: c# csv

我正在尝试修改以下方法,以便它将在我正在比较的2个CSV文件的输出中显示不匹配项的列名:

public static void CompareCSVFiles_2(string file1, string file2)
{
    string[] names1 = File.ReadAllLines(file1);
    string[] names2 = File.ReadAllLines(file2);

    IEnumerable<string> differenceQuery =  names1.Except(names2);

    foreach (string s in differenceQuery)
        Console.WriteLine(s);
}

我要比较的2个文件的格式为纯CSV,例如:

CSV_1                          CSV_2    

Column_1  Column_2 Column_3    Column_1  Column_2 Column_3 
123       hhh      bbb         123       hhh      bbb
135       ddd      lll         135       ddd      zzz

我需要的输出不仅需要指示在两个文件之间找到了差异,还需要指示列名。 例如: “在Column_3第2行中找到差异”。

我确实知道“列”只是CSV中的[0]行,但是我在这里缺少什么呢? 谢谢。

1 个答案:

答案 0 :(得分:1)

当前实现逐行比较两个文件。如果要查找列中的差异,则必须首先解析行。

有一个名为CsvHelper的好nuget程序包,可以帮助您进行解析。在他们的网站上查看“阅读”>“手工阅读示例”,以了解如何逐列阅读文件。