ILookup<TKey,TElement> Interface
Definition
Defines an indexer, size property, and Boolean search method for data structures that map keys to IEnumerable<T> sequences of values.
generic <typename TKey, typename TElement>
public interface class ILookup : System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^>
public interface ILookup<TKey,TElement> : System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>>
type ILookup<'Key, 'Element> = interface
interface seq<IGrouping<'Key, 'Element>>
interface IEnumerable
Public Interface ILookup(Of TKey, TElement)
Implements IEnumerable(Of IGrouping(Of TKey, TElement))
Type Parameters
- TKey
The type of the keys in the ILookup<TKey,TElement>.
- TElement
The type of the elements in the IEnumerable<T> sequences that make up the values in the ILookup<TKey,TElement>.
- Derived
- Implements
-
IEnumerable<IGrouping<TKey,TElement>> IEnumerable
Examples
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.
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
}
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
Remarks
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>.
Properties
Count |
Gets the number of key/value collection pairs in the ILookup<TKey,TElement>. |
Item[TKey] |
Gets the IEnumerable<T> sequence of values indexed by a specified key. |
Methods
Contains(TKey) |
Determines whether a specified key exists in the ILookup<TKey,TElement>. |
GetEnumerator() |
Returns an enumerator that iterates through a collection. (Inherited from IEnumerable) |
Extension Methods
CopyToDataTable<T>(IEnumerable<T>) |
Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) |
Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) |
Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter |
Cast<TResult>(IEnumerable) |
Casts the elements of an IEnumerable to the specified type. |
OfType<TResult>(IEnumerable) |
Filters the elements of an IEnumerable based on a specified type. |
AsParallel(IEnumerable) |
Enables parallelization of a query. |
AsQueryable(IEnumerable) |
Converts an IEnumerable to an IQueryable. |
Ancestors<T>(IEnumerable<T>) |
Returns a collection of elements that contains the ancestors of every node in the source collection. |
Ancestors<T>(IEnumerable<T>, XName) |
Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Only elements that have a matching XName are included in the collection. |
DescendantNodes<T>(IEnumerable<T>) |
Returns a collection of the descendant nodes of every document and element in the source collection. |
Descendants<T>(IEnumerable<T>) |
Returns a collection of elements that contains the descendant elements of every element and document in the source collection. |
Descendants<T>(IEnumerable<T>, XName) |
Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection. |
Elements<T>(IEnumerable<T>) |
Returns a collection of the child elements of every element and document in the source collection. |
Elements<T>(IEnumerable<T>, XName) |
Returns a filtered collection of the child elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection. |
InDocumentOrder<T>(IEnumerable<T>) |
Returns a collection of nodes that contains all nodes in the source collection, sorted in document order. |
Nodes<T>(IEnumerable<T>) |
Returns a collection of the child nodes of every document and element in the source collection. |
Remove<T>(IEnumerable<T>) |
Removes every node in the source collection from its parent node. |