我有这样的事情:
private IDictionary<A, IDictionary<B, C>> data;
我想做类似的事情:
IDictionary<B, C> values = new Dictionary<B, C>();
values = Data.Values;
就像我在java中做的那样,但这不起作用。我想不通。感谢帮助
错误:
无法将类型 ICollection> 隐式转换为 IDictionary
我有这样的事情:
private IDictionary<A, IDictionary<B, C>> data;
我想做类似的事情:
IDictionary<B, C> values = new Dictionary<B, C>();
values = Data.Values;
就像我在java中做的那样,但这不起作用。我想不通。感谢帮助
错误:
无法将类型 ICollection> 隐式转换为 IDictionary
您仍然会调用.Values
,但它会返回一个 ValueCollection,而不是一个列表。要仅获取值,而不是键/值对列表,请使用 Select:
List<C> values = data.Values.Select(x => x.value);
如果您不确定会出现什么结果,请尝试使用类型推断
var coll = data.Values;
然后尝试Collection
使用foreach
-loop 访问单个字典。
foreach(var dic in coll){
//work on Dictionary
}
请参阅此处以获取参考。
您正在尝试访问ICollection
您的IDictionary<B, C>
其中一个不起作用,因为集合中有很多词典。
如果您希望将所有字典映射下来,则可以使用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));
这将为您提供多个值的多个键。