我正在尝试通过 SQL 查询比较两个大型数据集。现在 SQL 查询是在外部完成的,每个数据集的结果都保存到它自己的 csv 文件中。我的小型 C# 控制台应用程序加载两个文本/csv 文件并比较它们的差异并将差异保存到文本文件。
这是一个非常简单的应用程序,只需将第一个文件中的所有数据加载到数组列表中,并在从第二个 csv 文件读取每一行时对数组列表执行 .compare()。然后保存不匹配的记录。
该应用程序可以运行,但我想提高性能。我认为如果我可以利用两个文件都排序的事实,我可以大大提高性能,但我不知道 C# 中的数据类型保持顺序并允许我选择特定位置。有一个基本数组,但我不知道每个列表中会有多少项。我可以拥有超过一百万条记录。是否有我应该查看的可用数据类型?
最佳答案
如果您的两个 CSV 文件中的数据已经排序并且具有相同数量的记录,您可以完全跳过数据结构并进行就地分析。
StreamReader one = new StreamReader("C:\file1.csv");
StreamReader two = new StreamReader("C:\file2.csv");
String lineOne;
String lineTwo;
StreamWriter differences = new StreamWriter("Output.csv");
while (!one.EndOfStream)
{
lineOne = one.ReadLine();
lineTwo = two.ReadLine();
// do your comparison.
bool areDifferent = true;
if (areDifferent)
differences.WriteLine(lineOne + lineTwo);
}
one.Close();
two.Close();
differences.Close();
关于具有位置的大型排序集合的 C# 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77503/