2013-01-03 62 views
9

所有鍵我有這樣的:獲取包含字典值x

Dictionary<integer, string> dict = new Dictionary<integer, string>(); 

我想選擇中包含值abc字典中的所有項目。

有沒有內置功能讓我輕鬆做到這一點?

回答

28

那麼它的合理簡單使用LINQ:

var matches = dict.Where(pair => pair.Value == "abc") 
        .Select(pair => pair.Key); 

請注意,這不會是稍微高效 - 這是一個O(N)操作,因爲它需要檢查每一個條目。

如果您需要頻繁地執行此操作,您可能需要考慮使用另一種數據結構 - Dictionary<,>是專門爲快速查找而設計的,其密鑰爲

+0

如果您想要獲得包含「abc」值的密鑰,您可以: var matches = dict。 Where(pair => pair.Value.Contains(「abc」)) .Select(pair => pair.Key); – jmrnet

+0

@用戶:'詞典<,>'只是'Dictionary '的簡寫。你的字典有多大?您需要搜索多少個值?每秒一次的次數不是很多,如果它是一個相當小的字典,並且只尋找單個值... –

+0

字典的容量是10個鍵和4個值(「左」,「右」,「前」 ,「背部」)。有時這個函數每秒運行10次左右。 – Elmo

0

內置功能?沒有對不起......但另一種(不是很漂亮)的方式是迭代使用foreach(KeyValuePair<integer, string> ...