0

我曾计划为此使用 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

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

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

4

4 回答 4

2

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

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

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

于 2012-05-21T13:49:03.000 回答
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>,或IDictionary<int, Result>键控 Id 属性?

于 2012-05-21T13:49:07.030 回答
0

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

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

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

于 2012-05-21T13:50:04.590 回答
0

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

示例代码:

List list = new List();

list.Add(new MyStruct(10));
list.Add(new MyStruct(20));
于 2012-05-21T13:51:10.433 回答