好的,我正在密集。
如何删除字典中的最后一项?
我有代码检查字典中的数字,如果太多,它总是删除最后一个为下一个腾出空间,但我看不到直接的方法来做到这一点
if (recentDic.Count>= recentItemLimit )
recentDic.RemoveAt(recentDic.Count-1)
recentDic.Add(i,someString);
更新:感谢您的评论,您每天都能学到一些东西。我已经转到OrderedDictionay,现在正在使用RemoveAt
答案 0 :(得分:14)
词典没有保留其元素的任何顺序,因此无法知道最后一个词的含义。
如果你想删除一个随机的,你可以做一些像@Richard所说的那样:
dict.Remove(dict.Keys.Last());
或
dict.Remove(dict.Keys.First());
答案 1 :(得分:2)
正如@fiver所说:词典没有顺序所以“最后一项”没有意义。
但是你可以得到一些看起来像“最后”的东西:
dict.Remove(dict.Keys.Last());
答案 2 :(得分:0)
你可以使用
recentDic.Remove(d.Last().Key);
答案 3 :(得分:0)
此?
var dictionary = new Dictionary<int, string>();
dictionary.Remove(dictionary /* .OrderBy(o => o.Value) */ .Last().Key);
答案 4 :(得分:0)
但是如果你想根据某些顺序删除某种元素,请尝试使用SortedDictionary。然后,您可以使用dict.Remove(dict.Keys.Last())
删除最后一个密钥,如其他人所述。
答案 5 :(得分:0)
以你的方式试试
Dictionary<int, string> recentDic=new Dictionary<int,string>();
recentDic.Add(1,"vijay");
recentDic.Add(2,"ajay");
if (recentDic.Count >= 2)
{
int last = recentDic.Keys.Last();
recentDic.Remove(last);
recentDic.Add(last, "rahul");
}
答案 6 :(得分:0)
如果“last”是以时间方式表示的,则可以保留对最后插入的键的引用并删除该键。
答案 7 :(得分:0)
为了将来读者的利益,对上述错误信息进行一些更正:
Petar Ivanov
。如果它对您不起作用(就像它对 Derf Skren 不起作用)确保您在 using System.Linq;
标签中添加 using
。