This documentation is archived and is not being maintained.

ILookup<TKey, TElement> Interface

Defines an indexer, size property, and Boolean search method for data structures that map keys to IEnumerable<T> sequences of values.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, 

Type Parameters


The type of the keys in the ILookup<TKey, TElement>.


The type of the elements in the IEnumerable<T> sequences that make up the values in the ILookup<TKey, TElement>.

The type Lookup<TKey, TElement> implements the ILookup<TKey, TElement> interface.

The extension method ToLookup, which can be appended to the end of a LINQ query, returns an object of type ILookup<TKey, TElement>.

The following code example creates an ILookup<TKey, TElement> object and iterates through its contents.

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.
        // 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