1

如何Dictionary在一个键下存储许多不同的值?

我这里有一个代码:

Dictionary<string, DateTime> SearchDate = new Dictionary<string, DateTime>();

SearchDate.Add("RestDate", Convert.ToDateTime("02/01/2013"));
SearchDate.Add("RestDate", Convert.ToDateTime("02/28/2013"));

但在字典中我了解到只允许使用一个唯一键,所以我的代码产生了错误。

4

4 回答 4

4

使用Dictionary<string, List<DateTime>>. 通过键访问列表,然后将新项目添加到列表中。

Dictionary<string, List<DateTime>> SearchDate = 
    new Dictionary<string, List<DateTime>>();
...
public void AddItem(string key, DateTime dateItem)
{
    var listForKey = SearchDate[key];
    if(listForKey == null)
    {
        listForKey = new List<DateTime>();
    }
    listForKey.Add(dateItem);
}
于 2013-02-01T05:00:51.027 回答
4

最简单的方法是制作Dictionary某种容器,例如

Dictionary<string,HashSet<DateTime>>

或者

Dictionary<string,List<DateTime>>
于 2013-02-01T04:34:50.503 回答
2

您可以尝试使用Lookup Class。要创建它,您可以使用Tuple Class

var l = new List<Tuple<string,DateTime>>();
l.Add(new Tuple<string,DateTime>("RestDate", Convert.ToDateTime("02/01/2013")));
l.Add(new Tuple<string,DateTime>("RestDate", Convert.ToDateTime("02/28/2013")));

var lookup = l.ToLookup(i=>i.Item1);

但是,如果您需要修改查找,则必须修改原始元组列表并从中更新查找。因此,这取决于此集合倾向于更改的频率。

于 2013-02-01T04:38:07.983 回答
-1

如果您使用的是 .NET 3.5,则可以使用Lookup类

于 2013-02-01T04:36:22.497 回答