我正在尝试修改以下方法,以便它将在我正在比较的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]行,但是我在这里缺少什么呢? 谢谢。
答案 0 :(得分:1)
当前实现逐行比较两个文件。如果要查找列中的差异,则必须首先解析行。
有一个名为CsvHelper的好nuget程序包,可以帮助您进行解析。在他们的网站上查看“阅读”>“手工阅读示例”,以了解如何逐列阅读文件。