2010-04-22 65 views
2

我有一個List<myClass> myList用於存儲項目列表。如何有效地剪輯字典中的條目數量?

當我有剪裁此(丟棄物品超過一定水平,任何量)我用:

myList.RemoveRange(threshold, myList.Count - threshold); 

其中閾值是事物的最大金額的列表可以包含

現在我已經將數據類型升級到Dictionary<key, myClass> myDictionary

我該如何基本做同樣的事情:放棄高於某個閾值的所有條目。 (丟棄哪些並不重要)

我想我可以通過鍵集合進行foreach並手動刪除所有鍵/值對。但我希望有一個更優雅的解決方案。

回答

3

此代碼會將名爲dictDictionary修剪成由maxSize指定的最大尺寸。

foreach (var obj in dict.Keys.Skip(maxSize).ToList()) dict.Remove(obj); 
+0

+1優雅的解決方案!你可以將它打包成一個擴展方法,如:public static void Trim (this IDictionary dict,int max){foreach(TKey key in dict.Keys.Skip(max).ToList ))dict.Remove(key); }' – 2010-04-22 13:38:07