Expresión lambda en ToDictionary
Frecuentes
Visto 1,148 veces
0
Para convertir una lista a un diccionario, podemos hacerlo fácilmente con lo siguiente:
list.ToDictionary(v=> v, v=>true);
Para el primer parámetro en ToDictionary
, puedo entender que el primer parámetro es el elemento del diccionario. Pero que se entiende por v=> true
?
El segundo parámetro debe ser del tipo IEqualityComparer
. ¿Para qué sirve esto? Como es v=> true
mismo como IEqualityComparer
?
3 Respuestas
1
Este planteamiento de « es el método que se utiliza.
El segundo parámetro (v => verdadero) es el selector de elementos (Una función de transformación para producir un valor de elemento de resultado de cada elemento).
Una lista con los elementos. 1
, 2
y 3
daría como resultado un diccionario con el siguiente mapeo (todos los valores son true
):
1: true
2: true
3: true
Respondido el 12 de junio de 12 a las 11:06
1
Echa un vistazo a la Documentación de MSDN. Esta es la sobrecarga tomando un segundo IEqualityComparer
argumento:
ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>)
Sin embargo, en su ejemplo, está utilizando la sobrecarga que toma un Func<TSource, TElement>
que se encarga de generar la valores del diccionario:
ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)
(En su caso, todos los valores son simplemente true
)
Respondido el 12 de junio de 12 a las 11:06
1
Cuando su lista tiene [1,2,3,4] y la convierte en un diccionario por list.ToDictionary(v=> v, v=>true);
entonces tu diccionario tiene estos valores
[1,true]
[2,true]
[3,true]
[4,true].
El primer valor es la clave el segundo es el valor
EDIT:
tal como @dkson dijo que el segundo parámetro es un selector de elementos. Puedes ver esto en intellisense cuando vas a la 3ra de 4 entradas :)
Respondido el 12 de junio de 12 a las 11:06
Sí, pero Intellisense muestra que el segundo elemento en ToDctionary tiene que ser IEqualityComparer
- user1240679
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# list dictionary or haz tu propia pregunta.
O este método en inglés ;-) msdn.microsoft.com/en-us/library/bb548657.aspx - M Afifi
Un diccionario es como su nombre indica un diccionario se utiliza para buscar un valor con una clave. Si no tiene y no necesita un valor, probablemente sea mucho mejor usar un HashSet - ejecutor