c# - new - ¿Cómo obtengo la lista de claves en un diccionario?
return dictionary c# (10)
Nunca obtuve ningún código. Intenté trabajar.
Quiero las llaves y no los valores (todavía). Usar otra matriz demostró ser demasiado trabajo ya que también uso quitar.
A menudo usé esto para obtener la clave y el valor dentro de un diccionario: (VB.Net)
For Each kv As KeyValuePair(Of String, Integer) In layerList
Next
(layerList es del tipo Dictionary (Of String, Integer))
Creo que la forma más sencilla es usar LINQ :
Dictionary<string, int> data = new Dictionary<string, int>();
data.Select(x=>x.Key).ToList();
Debería poder simplemente mirar .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);
}
La pregunta es un poco difícil de entender, pero supongo que el problema es que estás tratando de eliminar elementos del diccionario mientras iteras sobre las teclas. Creo que en ese caso no tienes más remedio que usar una segunda matriz.
ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
if (<your condition here>)
{
lDict.Remove(lKey);
}
}
Si puede usar listas genéricas y diccionarios en lugar de una lista de arreglos, lo haría, sin embargo, lo anterior debería funcionar.
La respuesta de Marc Gravell debería funcionar para ti. myDictionary.Keys
devuelve un objeto que implementa ICollection<TKey>
, IEnumerable<TKey>
y sus homólogos no genéricos.
Solo quería agregar que si planea acceder al valor también, podría recorrer el diccionario de esta manera (ejemplo modificado):
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);
}
No puedo creer todas estas respuestas intrincadas. Suponiendo que la clave es de tipo: cadena (o use ''var'' si es un desarrollador perezoso): -
List<string> listOfKeys = theCollection.Keys.ToList();
O así:
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);
}
Para obtener una lista de todas las llaves
List<String> myKeys = myDict.Keys.ToList();
Para un diccionario híbrido, uso esto:
List<string> keys = new List<string>(dictionary.Count);
keys.AddRange(dictionary.Keys.Cast<string>());
List<string> keyList = new List<string>(this.yourDictionary.Keys);