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.
Public Interface ILookup(Of TKey, TElement) _ Implements 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
J# supports the use of generic APIs, but not the declaration of new ones.
JScript does not support generic types or methods.
The type of the keys in the ILookup<(Of <(TKey, 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 Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC