2012-05-02 18 views
9

Tengo un diccionario que tiene una firma: Dictionary<int, List<string>>. Me gustaría convertirlo en una búsqueda con una firma: Lookup<int, string>.¿Cómo convierto un diccionario a una búsqueda?

me trataron:

Lookup<int, string> loginGroups = mapADToRole.ToLookup(ad => ad.Value, ad => ad.Key); 

Pero eso no funciona tan bien.

Respuesta

17

que puede usar:

var lookup = dictionary.SelectMany(p => p.Value 
             .Select(x => new { p.Key, Value = x})) 
         .ToLookup(pair => pair.Key, pair => pair.Value); 

(usted podría utilizar KeyValuePair en lugar de un tipo anónimo - que en su mayoría no lo hizo por razones de formato.)

Es bastante feo, pero funcionaría. ¿Puede reemplazar el código creado el diccionario para empezar? Eso probablemente sería más limpio.

+0

Creo que quieres decir: 'Seleccionar (x => nuevo {Clave = p.clave, Valor = x})' –

+0

@SaeedAmiri: No, quise decir lo que escribí. Debería funcionar bien tal como está: se infiere el nombre de la propiedad 'Clave'. –

+0

Niza Nunca lo intenté :) –

Cuestiones relacionadas