我从来没有得到任何我尝试过的代码。
我想要键而不是值(还)。事实证明使用另一个数组太多了,因为我也使用了删除。
答案 0 :(得分:267)
List<string> keyList = new List<string>(this.yourDictionary.Keys);
答案 1 :(得分:65)
您应该只能看.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);
}
答案 2 :(得分:36)
获取所有密钥的列表
using System.Linq;
List<String> myKeys = myDict.Keys.ToList();
.Net framework 3.5或更高版本支持System.Linq。如果您在使用System.Linq
时遇到任何问题,请参阅以下链接答案 3 :(得分:12)
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);
}
答案 4 :(得分:3)
这个问题有点难以理解,但我猜测问题是你在迭代密钥时试图从字典中删除元素。我想在那种情况下你别无选择,只能使用第二个阵列。
ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
if (<your condition here>)
{
lDict.Remove(lKey);
}
}
如果您可以使用通用列表和字典而不是ArrayList,那么我会,但上面应该可以正常工作。
答案 5 :(得分:2)
我无法相信所有这些错综复杂的答案。假设键的类型为:string(如果你是一个懒惰的开发人员,则使用'var'): -
List<string> listOfKeys = theCollection.Keys.ToList();
答案 6 :(得分:0)
或者像这样:
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);
}
答案 7 :(得分:0)
对于混合词典,我使用它:
List<string> keys = new List<string>(dictionary.Count);
keys.AddRange(dictionary.Keys.Cast<string>());
答案 8 :(得分:-2)
我经常用它来获取字典中的键和值:(VB.Net)
For Each kv As KeyValuePair(Of String, Integer) In layerList
Next
(layerList的类型为Dictionary(Of String,Integer))