【发布时间】:2017-09-28 13:42:26
【问题描述】:
我有两个大文本文件要比较,每个文件包含大约 100,000 行,每行代表数据库中的一个实体,它是数据。
使用 c#。 最初比较时,我只是逐行吐出文件,然后将每一行吐出到字典中,然后按每个文件内容的键比较值。 这工作正常,但在我看来有点尴尬,因为每一行都是“愚蠢的”,而且我对每个分割所代表的内容、别名等的控制较少。然后我决定将每一行表示为一个对象,并带有命名、属性, ETC,。 从那时起,它的代码更简洁,更容易控制,但在性能方面,它需要大约 8 分钟,而之前的方法不到一分钟。
我想知道,如果从每一行创建对象是正确的方式(编程明智),或者在这种情况下,“愚蠢”的分割、循环和比较文本将是“更干净”的方式?
更新目的: 我将代码更改为反对行,因为行中的每个拆分都有自己的“设置”,例如,一行的数量看起来像 00100,然后我想将其解析为 int,然后再进行比较,一些拆分是“忽略”,每个拆分也有一个名称(基本金额,公司等),所以如果有差异,我想报告拆分的名称.. 我的疑问是,如果将在 20 秒内运行的代码更改为在 10 分钟内运行但让我的生活更轻松的代码,是正确的吗?
【问题讨论】:
-
你想要完成什么?寻找重复的行?具有相同键但值不同的行?要从一个文件添加到另一个文件的新记录?
-
这完全取决于你之后对这些行所做的事情。如果您只是扫描文件以查找错误,则继续逐行读取并处理字符串。如果你想对数据做一些实际的事情,你可能应该创建一个类的一些实例。
-
我正在尝试获取每一行,找到关键,并将整行与另一个文件的引用行进行比较。每行代表一个“实体”,我正在尝试比较每个文件中匹配的实体内容。
-
@JoelCoehoorn,具有相同键但值不同的行。但要检查不同的值,我必须拆分行本身。每个拆分可能代表需要的不同“数据”压缩时区别对待
-
第一个文件中的行是否总是在第二个文件中匹配?文件是否以任何方式排序?
标签: c# string text split compare