在C#中比较两个csv文件
我需要以编程方式找出两个csv文件之间的区别。 有没有办法在不使用任何循环的情况下找出差异?
请帮我。
你看过以下链接了吗?
如果没有,那么你应该。
- C# – 比较两个CSV文件并提供输出
- 在C#建议中比较2个CSV文件?
您需要多少关于差异的信息? 如果您需要的只是它们不同并且没有循环的要求得到修复,您可以尝试使用MD5哈希并比较两个哈希值。 如果您不关心内存使用情况,您可以将整个流转Getbytes
到MemoryStream
调用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保存行(标识附加行)并获取此文件的下一行
- 将每行拆分为