我有以下词典内容:
[0] {75, SimpleObject}
[1] {56, SimpleObject}
[2] {65, SimpleObject}
[3] {12, SimpleObject}
...
我希望得到第一把钥匙,意味着75,没有foreach。
也许key
字应该引用[0]而不是75.
因为基于该键,我想使用SimpleObject
,我写道:
SimpleObject s = dictionary[0] as SimpleObject;
但是VS2010抛出异常:
The given key was not present in the dictionary.
我知道[0]
表示字典中的键号0,意味着我可以
[0] {72, SimpleObject} //here
[1] {56, SimpleObject}
[2] {65, SimpleObject}
[3] {12, SimpleObject}
...
然后我应该找到通讯员SimpleObject
。
抱歉,这是第一次使用词典,我想了解更多信息。
问题:如何获取数字75
和他的SimpleObject?
谢谢。
PS:我知道在StackOverflow中已经存在类似的主题,但是没有一个能帮助我获得该密钥。
答案 0 :(得分:10)
using System.Linq;
...
dictionary.First().Key // Returns 75
dictionary.First().Value // returns the related SimpleObject
答案 1 :(得分:5)
不是Dictionary<TKey, TValue>
是无序集合,因此它没有第一个或最后一个概念。呈现的项目的顺序基本上是随机的。您不能依赖于应用程序实例之间的相同。
如果您确实需要某些订单,则应使用SortedDictionary<TKey, TValue>
代替。这里提供的项目是以有序的方式完成的,并且会在您的应用程序运行之间为您提供一致的结果
// Consistent output is produced below
var dictionary = new SortedDictionary<int, SimpleObject>();
var pair = dictionary.First();
Console.WriteLine("{0} -> {1}", pair.Key, pair.Value);
答案 2 :(得分:1)
Dictionary
是一个(键,值)对结构,没有明确的排序。也许您正在寻找的内容对SortedDictionary
有用,但与常规Dictionary
无关。
答案 3 :(得分:0)
您可以使用
dictionary.First();
答案 4 :(得分:0)
75是关键值而非索引:
SimpleObject s = dictionary[75] as SimpleObject;
Dictionary<T,U>
是无序的,因此您不应该依赖它包含的键值对的顺序。
答案 5 :(得分:0)
字典不是有序集合,它没有任何索引。
使用密钥访问该项目:
SimpleObject s = dictionary[75];