2011-02-03 14 views
16

Tengo diccionario de la clave de cadena que quiero obtener Valor de la clave correspondiente usando LinqObtiene el valor de la clave utilizando linq

+3

Y si tiene la llave, ¿por qué en el mundo desea usar LINQ para obtener el valor? ¿Por qué no 'var value = myDictionary [" myKey "];'? –

+0

Diccionario test = new Dictionary (); – PramodChoudhari

+5

La pregunta todavía no tiene sentido. No importa Linq, solo describa lo que ya tiene y el resultado que desea. No cometa el error de pensar que necesita usar cierta herramienta o patrón cuando ese no sea el caso. –

Respuesta

42

¿Por qué quiere obtener un valor de un diccionario que utiliza LINQ? Usted sólo puede obtener el valor usando:

int value = dictionary[key]; 

Usted podría utilizar Single, pero es totalmente inútil y más código:

var keyValuePair = dictionary.Single(x => x.Key == key); 
int value = keyValuePair.Value; 
+2

Estoy de acuerdo. El uso de LINQ para esto elimina el rendimiento de O (1) para O (N). Totalmente sin sentido. – Enigmativity

+8

¿Por qué tengo la horrible sensación de que su ejemplo de Linq acaba de convertirse en algún código de producción en alguna parte? –

+1

@Quick Joe Smith - Lo sé. Creo que he muerto un poco por dentro. – GenericTypeTea

12

¿Por qué utilizar Linq para algo que está integrado?

var val = myDict[key]; 

utilizar LINQ donde tiene sentido (colecciones que consultan), no por algo que ya está bien manejado por los Dictionary clases.

+0

, entonces, ¿qué pasa con LINQ? Gran cosa si es una sintaxis más larga, está ahí para extenderse con más o diferentes LINQ la próxima vez y fácil de leer. Claro que acceder por clave con [] es el menos caracteres, pero a quién le importa en este caso. ¿Entonces LINQ consulta más lento un diccionario que dices? ¿Alguien hizo alguna prueba para probar eso? – PositiveGuy

+0

@CoffeeAddict - Mi punto es que LINQ no es la respuesta para todo. Algunas cosas, como los indexadores, son características del lenguaje que se deben usar en lugar de usar LINQ. – Oded

+0

Acepto que no siempre es la respuesta, pero es muy útil por MUCHO. Me encantaría ver una comparación de rendimiento entre indexadores y LINQ – PositiveGuy

0

devuelve el valor de cadena en este caso particular.

Disctionary<int, string> CustomValues = new Dictionary<int, string>(); 
    CustomValues[int]; //CustomValues[key]; 
Cuestiones relacionadas