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;