1

Dictionary1つのキーの下に多くの異なる値を格納するにはどうすればよいですか?

私はここにコードを持っています:

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

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

しかし、辞書で私は1つの一意のキーしか許可されていないことを知りました。そのため、私のコードはエラーを生成しています。

4

4 に答える 4

4

最も簡単な方法はDictionary、たとえば、ある種のコンテナを作成することです。

Dictionary<string,HashSet<DateTime>>

また

Dictionary<string,List<DateTime>>
于 2013-02-01T04:34:50.503 に答える
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 に答える
2

ルックアップクラスを使用してみてください。それを作成するには、タプルクラスを使用できます。

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を使用している場合は、ルックアップクラスを使用できます

于 2013-02-01T04:36:22.497 に答える