2013-05-08 39 views
3

我有一個Dictionary<string,int>,其中有一些值。例如:在使用LINQ按值過濾字典時拋出麻煩

  • 「一」,600
  • 「B」,550
  • 「C」,400

我要對此列表進行過濾保持了比500更大的價值。我不經常使用C#,並且沒有使用任何LINQ。我認爲這可能是學習的好時機。所以,我曾嘗試以下:

Dictionary<string,int> someDictionary = new Dictionary(); 

// Code to populate someDictionary goes here 

someDictionary = (Dictionary<string,int>) someDictionary.Where(pair => pair.Value > 500); 

這引發InvalidCastException:

無法投類型的對象WhereEnumerableIterator`1 [System.Collections.Generic.KeyValuePair`2 [System.String ,System.Int32]]'鍵入'System.Collections.Generic.Dictionary`2 [System.String,System.Int32]'。

我試過蒙上了一把,調用.ToDictionary(),等我似乎無法弄清楚如何正確施放此,或獲取語法完全正確。你能爲我指出正確的方向嗎?感謝您的時間。

回答

10

您需要使用ToDictionary,然後傳遞該鍵的選擇器,然後傳遞該值的選擇器。

someDictionary = someDictionary.Where(pair => pair.Value > 500) 
           .ToDictionary(p => p.Key, p => p.Value); 
+0

很好,謝謝!非常感激。 – Brad 2013-05-08 02:23:24

+0

不用擔心,很高興幫助。 – 2013-05-08 02:24:08