mpe*_*pen 20 c# collections dictionary
谁知道一个好的实现MultiValueDictionary?基本上,我想要一些允许每个键有多个值的东西.我希望能够做类似的事情
dict.Add(key, val);
Run Code Online (Sandbox Code Playgroud)
如果密钥尚不存在,它将添加它,如果它存在,它将只添加该密钥的另一个值.我只是要迭代它,所以我真的不关心其他检索方法.
小智 37
微软刚刚在NuGet上添加了一个官方预发布版本,你正在寻找什么(称为MultiDictionary):https://www.nuget.org/packages/Microsoft.Experimental.Collections/
有关使用情况和更多详细信息,请访问官方MSDN博客文章:http://blogs.msdn.com/b/dotnet/archive/2014/06/20/would-you-like-a-multidictionary.aspx
我是此软件包的开发人员,如果您对性能或任何问题有任何疑问,请在此处或MSDN上告诉我.
希望有所帮助.
Guf*_*ffa 21
您可以从列表字典轻松制作一个:
public class MultiValueDictionary<Key, Value> : Dictionary<Key, List<Value>> {
public void Add(Key key, Value value) {
List<Value> values;
if (!this.TryGetValue(key, out values)) {
values = new List<Value>();
this.Add(key, values);
}
values.Add(value);
}
}
Run Code Online (Sandbox Code Playgroud)
Hen*_*man 11
它不存在,但您可以从Dictionary和List中快速构建一个:
class MultiDict<TKey, TValue> // no (collection) base class
{
private Dictionary<TKey, List<TValue>> _data = new Dictionary<TKey,List<TValue>>();
public void Add(TKey k, TValue v)
{
// can be a optimized a little with TryGetValue, this is for clarity
if (_data.ContainsKey(k))
_data[k].Add(v)
else
_data.Add(k, new List<TValue>() { v}) ;
}
// more members
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22248 次 |
| 最近记录: |