具有位置的大型排序集合的 C# 数据类型?

标签 c# comparison types sorting

我正在尝试通过 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/

相关文章:

c# - 将 RGB/画笔转换为十六进制值

C# DBNull 和可空类型 - 最干净的转换形式

c# - 在 Unity C# 中创建全局函数

php - PHP:比较整数/字符串变量和空值

java - 从其类返回泛型类型的实例

c# - 为什么 HttpClient 在 BackgroundWorker 中不起作用?

vb6 - 如何比较 VB6 中可执行文件的大小?

javascript - 比较 undefined 和 false 的非常奇怪的行为

swift - 你能在 swift 中强制使用类型别名吗

android - Java 中没有无符号类型,为什么 DEX 可执行文件中有无符号类型?