Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反对与匿名-在文本上运行_C#_String_Text_Split_Compare - Fatal编程技术网

C# 反对与匿名-在文本上运行

C# 反对与匿名-在文本上运行,c#,string,text,split,compare,C#,String,Text,Split,Compare,我有两个大的文本文件要比较,每个文件包含大约100000行,每行代表数据库中的一个实体,以及它的数据 使用c#。 为了进行初步比较,我只需将文件逐行输出,然后将每行输出到字典中,然后通过键比较每个文件内容中的值。 这很好,但在我看来有点尴尬,因为每一行都是“愚蠢的”,我对每一次分割所表示的内容、别名等控制较少。然后我决定将每一行表示为一个对象,包括命名、属性等,。 从那时起,它的代码更干净,更容易控制,但从性能上看,它需要大约8分钟,而与前一种方法相比不到一分钟 我想知道,从每行开始创建对象是否

我有两个大的文本文件要比较,每个文件包含大约100000行,每行代表数据库中的一个实体,以及它的数据

使用c#。 为了进行初步比较,我只需将文件逐行输出,然后将每行输出到字典中,然后通过键比较每个文件内容中的值。 这很好,但在我看来有点尴尬,因为每一行都是“愚蠢的”,我对每一次分割所表示的内容、别名等控制较少。然后我决定将每一行表示为一个对象,包括命名、属性等,。 从那时起,它的代码更干净,更容易控制,但从性能上看,它需要大约8分钟,而与前一种方法相比不到一分钟

我想知道,从每行开始创建对象是否是正确的方法(编程方面),或者在这种情况下,“愚蠢”的拆分、循环和比较文本将是“更干净”的方法

更新目的: 我将代码改为反对行,因为行中的每个拆分都有自己的“设置”,例如,一行的金额看起来像00100,然后我想将其解析为int,然后进行比较,一些拆分是“忽略”,每个拆分也有一个名称(基本金额、公司等),因此,如果有差异,我想报告拆分的名称。。
我的疑问是,如果将运行时间大约为20秒的代码改为运行时间为10分钟的代码,但这会让我的生活更轻松,这是正确的吗

一个简单的原则是,你必须构建你需要的,而不是看起来漂亮的

如果您需要操作正在读取的数据,那么使用这些数据填充对象对我来说是有意义的。但是如果你只需要比较条目,没有理由让条目比这更“聪明”


然而,我建议,如果您认为代码很难看或者感觉笨拙,那么您可以尝试寻找替代方案,并选择您认为最好的。特别是对于比较,您可能需要更深入地研究linq或regex。在我看来,可维护性和可读性更为重要。一旦你做到了这一点,你就可以随时提高性能


我看到了许多根本不需要的“早期”性能优化,它们只会使一切变得更加复杂。

您想实现什么?寻找重复的线条?具有相同键但值不同的行?要从一个文件添加到另一个文件中的新记录?这完全取决于您之后对这些行所做的操作。如果您只是扫描文件以查找错误,而这些错误停留在逐行读取文件并处理字符串上。如果你真的想对数据做点什么,你可能应该创建一些类的实例。我试图获取每一行,找到键,并将整行与另一个文件的引用行进行比较。每行代表一个“实体”,我试图比较每个文件中匹配的实体内容。@JoelCoehoorn,具有相同键但值不同的行。。但要检查不同的值,我必须拆分行本身。。每个分割可能代表不同的“数据”,需要在压缩时进行不同的处理。第一个文件中的行在第二个文件中是否总是匹配?文件是否以任何方式排序?问题是,我将代码更改为反对行,因为行中的每个拆分都有自己的“设置”。例如,一行的数量看起来像00100,然后我想将其解析为int,然后进行比较,一些拆分是“忽略”,每个拆分也有一个名称(基本金额、公司等),因此如果存在差异,我想报告拆分的名称。基于此,我想说转换为对象是有帮助的。也许您可以通过仅转换存在差异的对象来提高性能。