字典的字典,如何得到价值
本文关键字:字典 何得 | 更新日期: 2023-09-27 18:08:01
我有这样的东西:
private IDictionary<A, IDictionary<B, C>> data;
,我想这样做:
IDictionary<B, C> values = new Dictionary<B, C>();
values = Data.Values;
就像我在java中做的那样,但这不起作用。我想不明白。谢谢你的帮助
错误:不能隐式地将类型ICollection>转换为字典
您仍然会调用.Values
,但它返回一个ValueCollection,而不是一个列表。要获取值,而不是键/值对的列表,请使用Select:
List<C> values = data.Values.Select(x => x.value);
http://msdn.microsoft.com/en-us/library/ekcfxy3x.aspx 如果您不确定输出结果,请尝试使用type-inference
var coll = data.Values;
然后尝试使用foreach
-循环访问Collection
以访问各个字典。
foreach(var dic in coll){
//work on Dictionary
}
您正在尝试访问IDictionary<B, C>
的ICollection
,这将无法工作,因为集合中有任何许多字典。
如果你想映射所有的字典,那么你可以使用Lookup
:
IDictionary<A, IDictionary<B, C>> data;
var values = data.ToLookup(d => d.Value.SelectMany(d => d.Key), d => d.Value.SelectMany(d => d.Value));