我需要一个类似于Dictionary的对象,它可以使用相同的密钥存储多个条目.这可以作为标准集合,还是我需要自己动手?
为了澄清,我希望能够做到这样的事情:
var dict = new Dictionary<int, String>();
dict.Add(1, "first");
dict.Add(1, "second");
foreach(string x in dict[1])
{
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
输出:
first
second
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 46
在.NET 3.5中,您可以使用Lookup而不是Dictionary.
var items = new List<KeyValuePair<int, String>>();
items.Add(new KeyValuePair<int, String>(1, "first"));
items.Add(new KeyValuePair<int, String>(1, "second"));
var lookup = items.ToLookup(kvp => kvp.Key, kvp => kvp.Value);
foreach (string x in lookup[1])
{
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
这个Lookup类是不可变的.如果你想要一个可变的版本,你可以使用EditableLookup从MiscUtil.
Cha*_*ion 11
我建议做这样的事情:
var dict = new Dictionary<int, HashSet<string>>();
dict.Add(1, new HashSet<string>() { "first", "second" });
Run Code Online (Sandbox Code Playgroud)
Dictionary<T,K>不支持此类行为,并且基类库中没有提供此类行为的集合.最简单的方法是构造一个这样的复合数据结构:
var data = new Dictionary<int, List<string>>();
Run Code Online (Sandbox Code Playgroud)
作为第二个参数,您应该使用一个集合来提供您正在寻找的品质,即稳定的订单⇒ List<T>,快速访问HashSet<T>等.
小智 7
你肯定想使用 NameValueCollection:
使用 System.Collections.Specialized;
NameValueCollection nvc = new NameValueCollection();
nvc.Add("pets", "Dog");
nvc.Add("pets", "Rabbit");
Console.WriteLine(nvc["pets"]);
//returns Dog,Rabbit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55474 次 |
| 最近记录: |