我有這樣的事情:字典詞典,如何獲得價值?
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的
,嘗試使用類型推斷
var coll = data.Values;
然後嘗試使用foreach
-loop來訪問Collection
以訪問單個字典。
foreach(var dic in coll){
//work on Dictionary
}
查看here僅供參考。
啊我現在得到它..通過價值觀我會得到字典的集合,不只是一個詞典..謝謝 – 2013-04-08 19:16:23
是的,這是真的! – 2013-04-08 19:17:37
你還是會叫.Values
,但它返回一個ValueCollection,而不是一個列表。爲了得到公正的價值觀,而不是鍵/值對的列表,使用一個選擇:如果你不知道什麼會出來
List<C> values = data.Values.Select(x => x.value);
是的,以及我如何將ICollection投射到IDictionary?有ToDictionary方法,但我真的不知道如何使用它 – 2013-04-08 19:09:53
你想在*其他*方向?您需要一種方法來爲ICollection中的每個項目構建密鑰,以便將其放入字典中。 – 2013-04-08 19:11:38
data.Values是通用的,這個不能用 – 2013-04-08 19:15:07
您正試圖訪問您的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));
,這將給你多鍵多個值。
什麼不起作用?你有錯誤嗎? – 2013-04-08 19:06:00
'data [key1] [key2]' – Romoku 2013-04-08 19:06:25
試試這個 values = Data [A];應該工作 – 2013-04-08 19:07:27