C#:从Dictionary <string,string>获取第一个键

我正在使用System.Collections.Generic.Dictionary<string, string>

我想从这本字典中返回第一个密钥。 我试过dic.Keys[0]但是我在Keys属性(它是一个KeyCollection对象)上唯一的东西就是一个枚举器。

我必须通过所有的键来枚举第一个?

假设你正在使用.NET 3.5:

 dic.Keys.First(); 

请注意,在字典中将不会保证键/值对的迭代。 你很可能会发现,在很多情况下,你把第一把钥匙放到字典中 – 但你绝对不能依赖这个。 正如斯基万所说,并不存在“第一”的概念。 从本质上来说,上面会给你“从字典中的一个关键” – 这是所有的保证。

(如果您不知道字典是否为空,则可以使用FirstOrDefault 。)

“第一”的概念并不适用于字典,因为没有sorting的条目; 任何插入或删除都可以从根本上改变按键的顺序。

首先,不,你不必枚举所有的条目 – 只要列举第一项:

 IEnumerator enumerator = dictionary.Keys.GetEnumerator(); enumerator.MoveNext(); object first = enumerator.Current; 

理想情况下,人们会检查MoveNext()实际上是否成功(它返回一个布尔值)否则调用Current可能会抛出。

还请注意,没有指定dicitonary的顺序。 这意味着“第一个”项实际上可以是任何键,在随后的调用中可能是不同的(尽pipe在实践中不会),并且随着项目被添加和从词典中移除,肯定会改变。

似乎有点过头,但怎么样

 foreach (<Type> k in dic.Keys) return k;