Defines an indexer, size property, and Boolean search method for data structures that map keys to IEnumerable<(Of <(T>)>) sequences of values.
Namespace:
System.Linq
Assembly:
System.Core (in System.Core.dll)
Visual Basic (Declaration)
Public Interface ILookup(Of TKey, TElement) _
Inherits IEnumerable(Of IGrouping(Of TKey, TElement)), _
IEnumerable
Dim instance As ILookup(Of TKey, TElement)
public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>,
IEnumerable
generic<typename TKey, typename TElement>
public interface class ILookup : IEnumerable<IGrouping<TKey, TElement>^>,
IEnumerable
JScript does not support generic types or methods.
Type Parameters
- TKey
The type of the keys in the ILookup<(Of <(TKey, TElement>)>).
- TElement
The type of the elements in the IEnumerable<(Of <(T>)>) sequences that make up the values in the ILookup<(Of <(TKey, TElement>)>).
The type Lookup<(Of <(TKey, TElement>)>) implements the ILookup<(Of <(TKey, TElement>)>) interface.
The extension method ToLookup, which can be appended to the end of a LINQ query, returns an object of type ILookup<(Of <(TKey, TElement>)>).
The following code example creates an ILookup<(Of <(TKey, TElement>)>) object and iterates through its contents.
Structure Package
Public Company As String
Public Weight As Double
Public TrackingNumber As Long
End Structure
Sub ILookupExample()
' Create a list of Packages to put into an ILookup 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 ILookup to organize the packages. Use the first character of Company as the key value.
' Select Company appended to TrackingNumber for each element value.
Dim packageLookup As ILookup(Of Char, String) = _
packages.ToLookup(Function(p) Convert.ToChar(p.Company.Substring(0, 1)), _
Function(p) p.Company & " " & p.TrackingNumber)
Dim output As New System.Text.StringBuilder
' Iterate through each group in the Lookup and output the contents.
For Each packageGroup In packageLookup
' Print the key value.
output.AppendLine(packageGroup.Key)
' Iterate through each value in the group and output it.
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
End Sub
class Package
{
public string Company { get; set; }
public double Weight { get; set; }
public long TrackingNumber { get; set; }
}
public static void ILookupExample()
{
// Create a list of Packages to put into an ILookup 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 ILookup object.
ILookup<char, string> packageLookup = packages.ToLookup(
p => Convert.ToChar(p.Company.Substring(0, 1)),
p => p.Company + " " + p.TrackingNumber
);
// Iterate through each value in the ILookup and output the contents.
foreach (var packageGroup in packageLookup)
{
// Print the key value.
Console.WriteLine(packageGroup.Key);
// Iterate through each value in the collection.
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
}
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5
.NET Compact Framework
Supported in: 3.5
XNA Framework
Supported in: 3.0
Reference