C#使用listcollection成员对对象进行排序

时间:2012-12-05 21:42:52

标签: c#

我有一个MVC网络应用程序,用户上传文本文件并解析出来。

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

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

我只是需要一些帮助,以更好的方式编写这个方法ReadLogFile,特别是基于initialtionDate和initiationTime进行排序。我想根据initiateDate和Time找到最小记录,然后做一些其他逻辑。

问题是如果我在对象中对列表成员进行排序,我会松开其他记录的位置。

1 个答案:

答案 0 :(得分: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>();
}

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