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)
public class Lookup<TKey, TElement> : ILookup<TKey, TElement>,
IEnumerable<IGrouping<TKey, TElement>>, IEnumerable
generic<typename TKey, typename TElement>
public ref class Lookup : ILookup<TKey, TElement>,
IEnumerable<IGrouping<TKey, TElement>^>, IEnumerable
J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.
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.
Hinweis: |
|---|
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.
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
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
Referenz