找到存储数据的正确方法

时间:2012-05-21 13:46:44

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

我原本计划使用Dictionary或SortedList,但随着项目的规划进展,我不知道该怎么办。

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

结果如下:

What type of Dictionary/List should be used for this?

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

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

......等等。我主要担心的是,大多数字典和列表以及排序/链接列表都没有重复的键或值。所以我不能使用它们,因为每个Result都有相同的键名,如Name,Title,Message等。值可能不同,尽管许多值如Name和Date以及其他值都是dupes 。所以我有点不知道不知道选择哪种词典/列表允许重复的键/名称不知道如何让那些“一对多”关系事情发生,所以我可以正确存储这些结果。

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

4 个答案:

答案 0 :(得分:2)

每个结果的键看起来都一样 - 这表明你应该将它们封装到一个单独的类中(例如“MailMessage”或其他任何意图)。然后你只需要Dictionary<int, MailMessage> - 甚至列表这些结果,如果键真的是零或一个是最低的,每个结果增加一个。

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

当然,假设你给我们的数据真的具有代表性。

答案 1 :(得分:2)

您是否只需要创建这样的类?

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>或{Id}属性的IDictionary<int, Result>

答案 2 :(得分:0)

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

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

您也可以使用存储库模式,谷歌搜索。

答案 3 :(得分:0)

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

示例代码:

List list = new List();

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