Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
.NET Framework Class Library
ILookup<(Of <(TKey, TElement>)>) Interface

Updated: November 2007

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) _
    Implements IEnumerable(Of IGrouping(Of TKey, TElement)),  _
    IEnumerable
Visual Basic (Usage)
Dim instance As ILookup(Of TKey, TElement)
C#
public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, 
    IEnumerable
Visual C++
generic<typename TKey, typename TElement>
public interface class ILookup : IEnumerable<IGrouping<TKey, TElement>^>, 
    IEnumerable
J#
J# supports the use of generic APIs, but not the declaration of new ones.
JScript
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.

Visual Basic
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

C#
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 Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

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
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker