Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Enumerable.ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)

 

Publicado: octubre de 2016

Crea un Lookup<TKey, TElement> de un IEnumerable<T> según el selector de claves especificada y las funciones del selector de elementos.

Espacio de nombres:   System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector
)

Parámetros

source
Type: System.Collections.Generic.IEnumerable<TSource>

El IEnumerable<T> para crear un Lookup<TKey, TElement> de.

keySelector
Type: System.Func<TSource, TKey>

Función para extraer una clave a partir de cada elemento.

elementSelector
Type: System.Func<TSource, TElement>

Función de transformación que va a generar un valor de elemento de resultado a partir de cada elemento.

Valor devuelto

Type: System.Linq.ILookup<TKey, TElement>

Lookup<TKey, TElement> que contiene valores de tipo TElement seleccionados en la secuencia de entrada.

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

TElement

Tipo de valor devuelto por elementSelector.

Exception Condition
ArgumentNullException

source o keySelector o elementSelector es null.

El ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) método devuelve un Lookup<TKey, TElement>, un diccionario de uno a varios que asigna las claves a las colecciones de valores. Un Lookup<TKey, TElement> difiere de un Dictionary<TKey, TValue>, que realiza una asignación unívoca de las claves a valores únicos.

El comparador de igualdad predeterminado Default se utiliza para comparar claves.

En el ejemplo de código siguiente se muestra cómo utilizar ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) para crear un Lookup<TKey, TElement> mediante una función del selector de claves y una función del selector de elementos.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
    public long TrackingNumber { get; set; }
}

public static void ToLookupEx1()
{
    // Create a list of Packages.
    List<Package> packages =
        new List<Package>
            { new Package { Company = "Coho Vineyard", 
                  Weight = 25.2, TrackingNumber = 89453312L },
              new Package { Company = "Lucerne Publishing", 
                  Weight = 18.7, TrackingNumber = 89112755L },
              new Package { Company = "Wingtip Toys", 
                  Weight = 6.0, TrackingNumber = 299456122L },
              new Package { Company = "Contoso Pharmaceuticals", 
                  Weight = 9.3, TrackingNumber = 670053128L },
              new Package { Company = "Wide World Importers", 
                  Weight = 33.8, TrackingNumber = 4665518773L } };

    // Create a Lookup to organize the packages. 
    // Use the first character of Company as the key value.
    // Select Company appended to TrackingNumber 
    // as the element values of the Lookup.
    ILookup<char, string> lookup =
        packages
        .ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                  p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup.
    foreach (IGrouping<char, string> packageGroup in lookup)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(packageGroup.Key);
        // Iterate through each value in the 
        // IGrouping and print its value.
        foreach (string str in packageGroup)
            Console.WriteLine("    {0}", str);
    }
}

/*
 This code produces the following output:

 C
     Coho Vineyard 89453312
     Contoso Pharmaceuticals 670053128
 L
     Lucerne Publishing 89112755
 W
     Wingtip Toys 299456122
     Wide World Importers 4665518773
*/

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.5
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: