Evaluar y enviar comentarios

  Encender vista de ancho de banda bajo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Lookup<(Of <(TKey, TElement>)>) (Clase)

Actualización: noviembre 2007

Representa una colección de claves asignadas a uno o varios valores.

Espacio de nombres:  System.Linq
Ensamblado:  System.Core (en System.Core.dll)
Visual Basic (Declaración)
Public Class Lookup(Of TKey, TElement) _
    Implements ILookup(Of TKey, TElement), IEnumerable(Of IGrouping(Of TKey, TElement)),  _
    IEnumerable
Visual Basic (Uso)
Dim instance As Lookup(Of TKey, TElement)
C#
public class Lookup<TKey, TElement> : ILookup<TKey, TElement>, 
    IEnumerable<IGrouping<TKey, TElement>>, IEnumerable
Visual C++
generic<typename TKey, typename TElement>
public ref class Lookup : ILookup<TKey, TElement>, 
    IEnumerable<IGrouping<TKey, TElement>^>, IEnumerable
J#
J# admite el uso de APIs genéricas pero no admite la declaración de nuevas API.
JScript
JScript no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

TKey

Tipo de las claves de Lookup<(Of <(TKey, TElement>)>).

TElement

Tipo de los elementos de cada valor IEnumerable<(Of <(T>)>) en Lookup<(Of <(TKey, TElement>)>).

Lookup<(Of <(TKey, TElement>)>) se parece a Dictionary<(Of <(TKey, TValue>)>). La diferencia reside en que Dictionary<(Of <(TKey, TValue>)>) asigna las claves a valores únicos, mientras que Lookup<(Of <(TKey, TElement>)>) las asigna a colecciones de valores.

Puede crear una instancia de Lookup<(Of <(TKey, TElement>)>) llamando a ToLookup en un objeto que implementa IEnumerable<(Of <(T>)>).

Bb460184.alert_note(es-es,VS.90).gifNota:

No hay ningún constructor público para crear una nueva instancia de Lookup<(Of <(TKey, TElement>)>). Además, los objetos Lookup<(Of <(TKey, TElement>)>) son inmutables, es decir, no se puede agregar ni quitar elementos o claves de un objeto Lookup<(Of <(TKey, TElement>)>) después de su creación.

En el ejemplo siguiente se crea un objeto Lookup<(Of <(TKey, TElement>)>) a partir de una colección de objetos. A continuación, se enumera el objeto Lookup<(Of <(TKey, TElement>)>) y se generan todas las claves y todos los valores en la colección de valores asociada de la clave. Se muestra asimismo cómo usar las propiedades Count e Item y los métodos Contains y GetEnumerator.

Visual Basic
Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub LookupExample()
    ' Create a list of Packages to put into a Lookup data structure.
    Dim packages As New System.Collections.Generic.List(Of Package)(New Package() _
        {New Package With {.Company = "Coho Vineyard", .Weight = 25.2, .TrackingNumber = 89453312L}, _
          New Package With {.Company = "Lucerne Publishing", .Weight = 18.7, .TrackingNumber = 89112755L}, _
          New Package With {.Company = "Wingtip Toys", .Weight = 6.0, .TrackingNumber = 299456122L}, _
          New Package With {.Company = "Contoso Pharmaceuticals", .Weight = 9.3, .TrackingNumber = 670053128L}, _
          New Package With {.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 for each element value in the Lookup.
    Dim lookup As ILookup(Of Char, String) = _
        packages.ToLookup(Function(ByVal p) Convert.ToChar(p.Company.Substring(0, 1)), _
                          Function(ByVal p) p.Company & " " & p.TrackingNumber)

    Dim output As New System.Text.StringBuilder
    ' Iterate through each IGrouping in the Lookup and output the contents.
    For Each packageGroup As IGrouping(Of Char, String) In lookup
        ' Print the key value of the IGrouping.
        output.AppendLine(packageGroup.Key)
        ' Iterate through each value in the IGrouping and print its value.
        For Each str As String In packageGroup
            output.AppendLine(String.Format("    {0}", str))
        Next
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' 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

    ' Get the number of key-collection pairs in the Lookup.
    Dim count As Integer = lookup.Count

    ' Select a collection of Packages by indexing directly into the Lookup.
    Dim cgroup As System.Collections.Generic.IEnumerable(Of String) = lookup("C"c)

    output = New System.Text.StringBuilder
    ' Output the results.
    output.AppendLine(vbCrLf & "Packages that have a key of 'C':")
    For Each str As String In cgroup
        output.AppendLine(str)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:
    '
    ' Packages that have a key of 'C'
    ' Coho Vineyard 89453312
    ' Contoso Pharmaceuticals 670053128

    ' Determine if there is a key with the value 'G' in the Lookup.
    Dim hasG As Boolean = lookup.Contains("G"c)
End Sub

C#
class Package
{
    public string Company;
    public double Weight;
    public long TrackingNumber;
}

public static void LookupExample()
{
    // Create a list of Packages to put into a Lookup data structure.
    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 for each element value in the Lookup.
    Lookup<char, string> lookup = (Lookup<char, string>)packages.ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                                                    p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup and output the contents.
    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

    // Get the number of key-collection pairs in the Lookup.
    int count = lookup.Count;

    // Select a collection of Packages by indexing directly into the Lookup.
    IEnumerable<string> cgroup = lookup['C'];

    // Output the results.
    Console.WriteLine("\nPackages that have a key of 'C':");
    foreach (string str in cgroup)
        Console.WriteLine(str);

    // This code produces the following output:
    //
    // Packages that have a key of 'C'
    // Coho Vineyard 89453312
    // Contoso Pharmaceuticals 670053128

    // Determine if there is a key with the value 'G' in the Lookup.
    bool hasG = lookup.Contains('G');
}

System..::.Object
  System.Linq..::.Lookup<(Of <(TKey, TElement>)>)
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5

.NET Compact Framework

Compatible con: 3.5
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso  |  Marcas Registradas  |  Privacidad
Page view tracker