在C#中比较两个csv文件

我需要以编程方式找出两个csv文件之间的区别。 有没有办法在不使用任何循环的情况下找出差异?

请帮我。

你看过以下链接了吗?
如果没有,那么你应该。

  • C# – 比较两个CSV文件并提供输出
  • 在C#建议中比较2个CSV文件?

您需要多少关于差异的信息? 如果您需要的只是它们不同并且没有循环的要求得到修复,您可以尝试使用MD5哈希并比较两个哈希值。 如果您不关心内存使用情况,您可以将整个流转GetbytesMemoryStream调用Getbytes ,然后将两个数组传递给Enumerable.SequenceEqual

 private static byte[] GetFileHash(string filename) { using(var stream = new FileStream(filename, FileMode.Open)) { var md5Hasher = new MD5CryptoServiceProvider(); return md5Hasher.ComputeHash(stream); } } var file1hash = GetFileHash("file1.ext"); var file2hash = GetFileHash("file2.ext"); var areEqual = Enumerable.SequenceEqual(file1hash, file2hash); 

现在有循环被使用,而不是你。

不,没有使用循环是没有办法的。 您如何期望任何比较算法迭代文件的字符/单词/标记/行而不使用循环?

无论如何,假设两个CSV都按ID列排序:

  • 尝试将文件拆分为行
  • 在循环中
    • 将每行拆分为List或数组
    • 比较两个文件的列表(忽略尾随空列等)
    • 找到数据列的差异时将包含差异的新行保存到List>
    • 找到不同的ID时,比较两个ID:使用较小的ID保存行(标识附加行)并获取此文件的下一行