我的任务是加载新的数据集(以 XML 文件编写),然后将其与“旧”集(也在 XML 中)进行比较。所有更改都写入另一个文件。
我的程序将新旧文件加载到两个数据集中,然后逐行比较新集中的主键和旧集中的主键。当我找到相应的行时,我检查所有字段,如果与旧字段有差异,我将其写入第三组,然后将其写入文件。
现在我使用:
newDS.ReadXml("data.xml");
oldDS.ReadXml("old.xml");
然后我只找到具有相应主键的行并比较其他字段。它对小文件非常有效。
问题是我的文件可能有大约 4GB。如果我的新旧数据都那么大,那么将 8GB 的数据加载到内存是很成问题的。
我想分部分加载我的数据,但是为了比较我需要整个旧数据(或者如何从 XML 文件中获取具有相应主键的特定行?)。
另一个问题是我不知道 XML 文件的结构。它由用户定义。
处理如此大的文件的最佳方法是什么?我考虑过使用 LINQ to XML,但我不知道它是否有可以帮助解决我的问题的选项。也许离开 XML 并使用不同的东西会更好?