字典的字典,如何得到价值

本文关键字:字典 何得 | 更新日期: 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));