2010-04-22 29 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