【问题标题】:Finding the right way to store data寻找存储数据的正确方法
【发布时间】:2012-05-21 13:46:43
【问题描述】:

我曾计划为此使用 Dictionary 或 SortedList,但随着项目在规划过程中不断发展,我不知道该怎么做。

我的网站将从数据库查询中加载一堆结果,我需要能够将这些结果存储在某个地方。

结果如下所示:

所以,这就是我要存储的内容:

Result #1 (int) > Name > Value
                > Title > Value
                > Message > Value
                > Date > Value
                > Email > Value

Result #2 (int) > Name > Value
                > Title > Value
                > Message > Value
                > Date > Value
                > Email > Value

Result #3 (int) > Name > Value
                > Title > Value
                > Message > Value
                > Date > Value
                > Email > Value

Result #4 (int) > Name > Value
                > Title > Value
                > Message > Value
                > Date > Value
                > Email > Value

... 等等。我主要担心的是大多数字典和列表以及排序/链接列表不能有重复的键或值。所以我不能为此使用它们,因为每个结果都将具有所有相同的键名称,例如名称、标题、消息等。值可能会有所不同,尽管许多值(例如名称和日期)以及其他值会被欺骗.所以我有点坚持不知道选择哪种字典/列表允许重复的键/名称不知道如何让这种“一对多”关系继续下去我可以正确存储这些结果。

有人可以帮我解决这个问题的最佳方法吗?

【问题讨论】:

    标签: c# asp.net .net razor webmatrix


    【解决方案1】:

    你不只需要创建一个这样的类吗?

    public class Result
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title{ get; set; }
        public string Message { get; set; }
        public DateTime Date { get; set; }
        public string Email { get; set; }
    }
    

    然后将您的数据库结果映射到类似 IList<Result>IDictionary<int, Result> 的 Id 属性键控?

    【讨论】:

      【解决方案2】:

      每个结果的键看起来都一样 - 这表明您应该将它们封装到一个单独的类中(例如“MailMessage”或任何它的意思)。然后,您将只有一个 Dictionary<int, MailMessage> - 甚至是这些结果的 列表,如果键实际上是 0 或 1 作为最低值,每个结果都增加一个。

      然后,您可能需要编写一些代码来组装您收到的数据库结果中的该集合,并进行适当的错误检查(例如,未知属性名称、同一消息的重复属性等)。

      当然,这是假设您提供给我们的数据确实具有代表性。

      【讨论】:

        【解决方案3】:

        看起来您只需要生成(使用 Entity Framework 等工具或手动)一些类来存储您的对象。

        然后您可以轻松地维护对象的集合。

        你也可以使用存储库模式,google一下。

        【讨论】:

          【解决方案4】:

          创建一个结构(因为您只想存储值,不需要方法)并将它们存储在通用列表中。

          示例代码:

          List list = new List();
          
          list.Add(new MyStruct(10));
          list.Add(new MyStruct(20));
          

          【讨论】:

            猜你喜欢
            • 2017-08-11
            • 2013-05-08
            • 2018-05-16
            • 1970-01-01
            • 2018-03-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多