如何获得字典中的密钥列表?
我从来没有得到任何代码,我尝试工作。
我想要的键而不是值(还)。 使用另一个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)