2011-06-17 44 views
2

好吧,我正在密集。字典<int,string>删除前一个项目

如何删除字典中的最后一项?

我有检查的字典和IFS的数字代码太多它总是删除最后一个使房间里的下一个,但我不能看到一个简单的方法来做到这一点

if (recentDic.Count>= recentItemLimit) 
    recentDic.RemoveAt(recentDic.Count-1) 

recentDic.Add(i,someString); 

更新:感谢您的评论,您每天都会学到一些东西。我已转到OrderedDictionay,现在正在使用RemoveAt

+7

你是什么意思删除字典中的最后一项?字典没有排序,所以你只是要删除最后一个桶中的内容? – 2011-06-17 08:35:13

+1

你最后的意思是什么?最后添加,首先添加或最后一个键 - 具有greates值的那个? – 2011-06-17 08:37:42

+0

如果你的int表示索引(或顺序),所以你应该删除最大的键的项目。 – Reniuz 2011-06-17 08:38:46

回答

11

字典不保留其元素的任何顺序,因此无法知道最后一个元素的含义。

如果你想删除随机一个你可以做什么像什么@Richard说:

dict.Remove(dict.Keys.Last()); 

dict.Remove(dict.Keys.First()); 
0

你可以使用

recentDic.Remove(d.Last().Key); 
0

呢?

var dictionary = new Dictionary<int, string>(); 
dictionary.Remove(dictionary /* .OrderBy(o => o.Value) */ .Last().Key); 
2

作为@fiver笔记:没有命令字典,所以“最后一项”没有任何意义。

然而,你可以得到的东西看起来像“最后”:

dict.Remove(dict.Keys.Last()); 
0

但是,如果你想删除基于某种顺序元素somekind的,请尝试使用SortedDictionary。正如其他人指出的那样,您可以使用dict.Remove(dict.Keys.Last())删除最后一个密钥。

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"); 

      } 
0

如果“最后一个”以时间方式意味着,你可以保持到最后插入关键字的引用,并删除一个。