Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
.NET Entwicklung
.NET Framework 3.5
.NET Framework
System.Linq-Namespace
.NET Framework-Klassenbibliothek
Lookup<(Of <(TKey, TElement>)>)-Klasse

Aktualisiert: November 2007

Stellt eine Auflistung von Schlüsseln dar, die einem oder mehreren Werten zugeordnet sind.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)
Visual Basic (Deklaration)
Public Class Lookup(Of TKey, TElement) _
    Implements ILookup(Of TKey, TElement), IEnumerable(Of IGrouping(Of TKey, TElement)),  _
    IEnumerable
Visual Basic (Verwendung)
Dim instance As Lookup(Of TKey, TElement)
C#
public class Lookup<TKey, TElement> : ILookup<TKey, TElement>, 
    IEnumerable<IGrouping<TKey, TElement>>, IEnumerable
VisualC++
generic<typename TKey, typename TElement>
public ref class Lookup : ILookup<TKey, TElement>, 
    IEnumerable<IGrouping<TKey, TElement>^>, IEnumerable
J#
J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.
Jscript
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

TKey

Der Typ der Schlüssel in einem Lookup<(Of <(TKey, TElement>)>).

TElement

Der Elementtyp im jeweiligen IEnumerable<(Of <(T>)>)-Wert von Lookup<(Of <(TKey, TElement>)>).

Ein Lookup<(Of <(TKey, TElement>)>) ähnelt einem Dictionary<(Of <(TKey, TValue>)>). Jedoch werden bei einem Dictionary<(Of <(TKey, TValue>)>) einzelnen Werten Schlüssel zugeordnet, wohingegen bei Lookup<(Of <(TKey, TElement>)>) Auflistungen von Werten Schlüssel zugeordnet werden.

Sie können eine Instanz von Lookup<(Of <(TKey, TElement>)>) erstellen, indem Sie ToLookup für ein Objekt aufrufen, das IEnumerable<(Of <(T>)>) implementiert.

Bb460184.alert_note(de-de,VS.90).gifHinweis:

Es ist kein öffentlicher Konstruktor zum Erstellen einer neuen Instanz eines Lookup<(Of <(TKey, TElement>)>) vorhanden. Lookup<(Of <(TKey, TElement>)>)-Objekte sind außerdem unveränderlich, d. h. Elemente oder Schlüssel können einem Lookup<(Of <(TKey, TElement>)>)-Objekt nicht hinzugefügt oder daraus entfernt werden, nachdem das Objekt erstellt wurde.

Im folgenden Beispiel wird ein Lookup<(Of <(TKey, TElement>)>) aus einer Auflistung von Objekten erstellt. Anschließend wird das Lookup<(Of <(TKey, TElement>)>) aufgelistet und alle Schlüssel sowie alle Werte in der mit dem Schlüssel verknüpften Auflistung werden ausgegeben. Ferner wird veranschaulicht, wie die Count-Eigenschaft und die Item-Eigenschaft sowie die Contains-Methode und die GetEnumerator-Methode verwendet werden.

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>)>)
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5

.NET Compact Framework

Unterstützt in: 3.5
Community Content   Was ist Community Content?
Neuen Inhalt hinzufügen RSS  Anmerkungen
Processing
Page view tracker