2011-04-26 15 views
28

¿Cómo obtengo la colección de claves de una búsqueda <> Creé a través del método .ToLookup()?Obtener claves de una búsqueda

Tengo una búsqueda que asigna valores-int a grupos de instancias de una clase personalizada. Necesito una colección de todas las claves int que contiene la búsqueda. ¿Hay alguna manera de hacer esto o tengo que recopilarlos y guardarlos por separado?

Respuesta

38

Puede recorrer el conjunto de grupos de elementos clave y leer las claves, p.

var keys = myLookup.Select(g => g.Key).ToList(); 
+3

Cualquier teoría de por qué 'Lookup' no incluye' 'método Keys' a diferencia Dictionary'? – NetMage

+0

No lo sé, ¿supongo que es mejor porque LINQ proporciona Lookup y puede usar LINQ para extraer las claves de esta manera? Aquí están las implementaciones actuales del origen de referencia .NET: [Lookup] (https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,cb695d4a973ef608), [Dictionary] (https: // referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,d3599058f8d79be0). Su almacenamiento interno se ve más o menos lo mismo. El diccionario tiene su propia clase KeyCollection, que también sería lo suficientemente fácil de adaptar para la búsqueda, pero no es solo compatible tal como está. – Rup

8

Una forma rápida:

var myKeys = myLookup.Select(l=>l.Key); 
Cuestiones relacionadas