-1

我有一个 MVC Web 应用程序,用户在其中上传一个文本文件,然后我将其解析出来。

要求刚刚改变,他们现在将上传多个相同类型的文件。我通过将文件路径发送到下面的方法 ReadParts 来解析单个文件,该方法打开一个流并调用方法 parseReplicateBlock 来检索所需的字段。对于多个文件,我可以将所有文件读入一个大流,但我担心它可能会超过缓冲区限制等。

所以我正在考虑逐个文件解析并将结果填充到一个对象中。那么我的要求是根据日期字段对记录进行排序。

在如何以更好的方式编写此方法 ReadLogFile 时,我只需要一些帮助,尤其是用于基于 initialtionDate 和initialtionTime 的排序。我想根据initialDate和Time找到最小记录,然后做一些其他的逻辑。

问题是如果我对对象内的列表成员进行排序,我会丢失其他记录的位置。

4

1 回答 1

1

您似乎将记录的每个字段存储在一个单独的集合中LogFile。这似乎是一种非常奇怪的存储数据的方式。

如果您对这些集合之一进行排序,那么它当然将不再与其他字段有任何关系,因为它们是不相关的。如果您依赖于所有收集的统计信息(例如,如果某个已解析记录中缺少某个字段),那么也存在很大的错误区域

相反,您应该有一个代表 SINGLE 记录的类,然后Logfile拥有这些记录的 SINGLE 集合。例如:

public class ReplicateBlock
{
    public string   ReplicateId    { get; set; }
    public string   AssayNumber    { get; set; }
    public DateTime InitiationDate { get; set; }
    //etc
}

public class LogFile
{
    public List<ReplicateBlock> ReplicateBlocks = new List<ReplicateBlock>();
}

我不得不说你的代码很难遵循。您所有的函数都是静态的这一事实使我认为您对面向对象编程并不是特别熟悉。我建议买一本关于这个主题的好书。

于 2012-12-05T22:02:47.593 回答