-1

我有这样的事情:

private IDictionary<A, IDictionary<B, C>> data;

我想做类似的事情:

IDictionary<B, C> values = new Dictionary<B, C>();
values = Data.Values;

就像我在java中做的那样,但这不起作用。我想不通。感谢帮助

错误:

无法将类型 ICollection> 隐式转换为 IDictionary

4

3 回答 3

2

您仍然会调用.Values,但它会返回一个 ValueCollection,而不是一个列表。要仅获取值,而不是键/值对列表,请使用 Select:

List<C> values = data.Values.Select(x => x.value);

http://msdn.microsoft.com/en-us/library/ekcfxy3x.aspx

于 2013-04-08T19:06:33.530 回答
1

如果您不确定会出现什么结果,请尝试使用类型推断

var coll = data.Values;

然后尝试Collection使用foreach-loop 访问单个字典。

foreach(var dic in coll){
//work on Dictionary
}

请参阅此处以获取参考。

于 2013-04-08T19:07:48.020 回答
0

您正在尝试访问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));

这将为您提供多个值的多个键。

于 2013-04-08T19:21:42.737 回答