在C#</int,>中直接获取字典<int,object =“”>第一个没有foreach的键

时间:2012-03-29 15:05:19

标签: c# dictionary

我有以下词典内容:

[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中已经存在类似的主题,但是没有一个能帮助我获得该密钥。

6 个答案:

答案 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];