如何获得字典中的密钥列表?

我从来没有得到任何代码,我尝试工作。

我想要的键而不是值(还)。 使用另一个arrayscertificate是太多的工作,我也使用删除。

List<string> keyList = new List<string>(this.yourDictionary.Keys); 

你应该可以看看.Keys

  Dictionary<string, int> data = new Dictionary<string, int>(); data.Add("abc", 123); data.Add("def", 456); foreach (string key in data.Keys) { Console.WriteLine(key); } 

获取所有密钥的列表

 List<String> myKeys = myDict.Keys.ToList(); 

Marc Gravell的答案应该适合你。 myDictionary.Keys返回一个实现ICollection<TKey>IEnumerable<TKey>及其非通用对象的对象。

我只是想补充一点,如果你打算访问这个值,你可以像这样循环查看字典(修改后的例子):

 Dictionary<string, int> data = new Dictionary<string, int>(); data.Add("abc", 123); data.Add("def", 456); foreach (KeyValuePair<string, int> item in data) { Console.WriteLine(item.Key + ": " + item.Value); } 

这个问题有点棘手的理解,但我猜测,问题是,你正试图从字典中删除元素,而你迭代的键。 我想在这种情况下,你别无select,只能使用第二个数组。

 ArrayList lList = new ArrayList(lDict.Keys); foreach (object lKey in lList) { if (<your condition here>) { lDict.Remove(lKey); } } 

如果你可以使用通用的列表和字典,而不是一个ArrayList,那么我会,但是上述应该只是工作。

我认为最简洁的方法是使用LINQ :

Dictionary<string, int> data = new Dictionary<string, int>(); data.Select(x=>x.Key).ToList();

或者像这样:

 List< KeyValuePair< string, int > > theList = new List< KeyValuePair< string,int > >(this.yourDictionary); for ( int i = 0; i < theList.Count; i++) { // the key Console.WriteLine(theList[i].Key); } 

对于混合字典,我使用这个:

 List<string> keys = new List<string>(dictionary.Count); keys.AddRange(dictionary.Keys.Cast<string>()); 

我经常用这个来获取字典中的键和值:(VB.Net)

  For Each kv As KeyValuePair(Of String, Integer) In layerList Next 

(layerList是Dictionary(Of String,Integer)types)