Lookup<TKey,TElement> Lookup<TKey,TElement> Lookup<TKey,TElement> Lookup<TKey,TElement> Class

定義

表示索引鍵的集合,每個索引鍵對應至一個或多個值。Represents a collection of keys each mapped to one or more values.

generic <typename TKey, typename TElement>
public ref class Lookup : System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^>, System::Linq::ILookup<TKey, TElement>
public class Lookup<TKey,TElement> : System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>>, System.Linq.ILookup<TKey,TElement>
type Lookup<'Key, 'Element> = class
    interface seq<IGrouping<'Key, 'Element>>
    interface ILookup<'Key, 'Element>
    interface IEnumerable
Public Class Lookup(Of TKey, TElement)
Implements IEnumerable(Of IGrouping(Of TKey, TElement)), ILookup(Of TKey, TElement)

類型參數

TKey

Lookup<TKey,TElement> 中之索引鍵的型別。The type of the keys in the Lookup<TKey,TElement>.

TElement

IEnumerable<T> 中每個 Lookup<TKey,TElement> 值的項目型別。The type of the elements of each IEnumerable<T> value in the Lookup<TKey,TElement>.

繼承
Lookup<TKey,TElement>Lookup<TKey,TElement>Lookup<TKey,TElement>Lookup<TKey,TElement>
實作

範例

下列範例會建立Lookup<TKey,TElement>從物件的集合。The following example creates a Lookup<TKey,TElement> from a collection of objects. 接著它會列舉Lookup<TKey,TElement>輸出每個索引鍵和索引鍵的關聯值的集合中每個值。It then enumerates the Lookup<TKey,TElement> and outputs each key and each value in the key's associated collection of values. 它也會示範如何使用屬性CountItem[TKey]和方法ContainsGetEnumeratorIt also demonstrates how to use the properties Count and Item[TKey] and the methods Contains and GetEnumerator.

class Package
{
    public string Company;
    public double Weight;
    public long TrackingNumber;
}

public static void LookupExample()
{
    // Create a list of Packages to put into a Lookup 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 Lookup.
    Lookup<char, string> lookup = (Lookup<char, string>)packages.ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                                                    p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup and output the contents.
    foreach (IGrouping<char, string> packageGroup in lookup)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(packageGroup.Key);
        // Iterate through each value in the IGrouping and print its value.
        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

    // Get the number of key-collection pairs in the Lookup.
    int count = lookup.Count;

    // Select a collection of Packages by indexing directly into the Lookup.
    IEnumerable<string> cgroup = lookup['C'];

    // Output the results.
    Console.WriteLine("\nPackages that have a key of 'C':");
    foreach (string str in cgroup)
        Console.WriteLine(str);

    // This code produces the following output:
    //
    // Packages that have a key of 'C'
    // Coho Vineyard 89453312
    // Contoso Pharmaceuticals 670053128

    // Determine if there is a key with the value 'G' in the Lookup.
    bool hasG = lookup.Contains('G');
}
Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub LookupExample()
    ' Create a list of Packages to put into a Lookup 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 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 Lookup.
    Dim lookup As ILookup(Of Char, String) = _
        packages.ToLookup(Function(ByVal p) Convert.ToChar(p.Company.Substring(0, 1)), _
                          Function(ByVal p) p.Company & " " & p.TrackingNumber)

    Dim output As New System.Text.StringBuilder
    ' Iterate through each IGrouping in the Lookup and output the contents.
    For Each packageGroup As IGrouping(Of Char, String) In lookup
        ' Print the key value of the IGrouping.
        output.AppendLine(packageGroup.Key)
        ' Iterate through each value in the IGrouping and print its value.
        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

    ' Get the number of key-collection pairs in the Lookup.
    Dim count As Integer = lookup.Count

    ' Select a collection of Packages by indexing directly into the Lookup.
    Dim cgroup As System.Collections.Generic.IEnumerable(Of String) = lookup("C"c)

    output = New System.Text.StringBuilder
    ' Output the results.
    output.AppendLine(vbCrLf & "Packages that have a key of 'C':")
    For Each str As String In cgroup
        output.AppendLine(str)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:
    '
    ' Packages that have a key of 'C'
    ' Coho Vineyard 89453312
    ' Contoso Pharmaceuticals 670053128

    ' Determine if there is a key with the value 'G' in the Lookup.
    Dim hasG As Boolean = lookup.Contains("G"c)
End Sub

備註

ALookup<TKey,TElement>類似於Dictionary<TKey,TValue>A Lookup<TKey,TElement> resembles a Dictionary<TKey,TValue>. 其差異在於Dictionary<TKey,TValue>對應到單一值的索引鍵,而Lookup<TKey,TElement>將索引鍵對應至值的集合。The difference is that a Dictionary<TKey,TValue> maps keys to single values, whereas a Lookup<TKey,TElement> maps keys to collections of values.

您可以建立的執行個體Lookup<TKey,TElement>藉由呼叫ToLookup實作的物件上IEnumerable<T>You can create an instance of a Lookup<TKey,TElement> by calling ToLookup on an object that implements IEnumerable<T>.

注意

若要建立的新執行個體的任何公用建構函式Lookup<TKey,TElement>There is no public constructor to create a new instance of a Lookup<TKey,TElement>. 此外,Lookup<TKey,TElement>物件是不可變,也就是您無法在其中新增或移除項目或索引鍵Lookup<TKey,TElement>物件之後建立。Additionally, Lookup<TKey,TElement> objects are immutable, that is, you cannot add or remove elements or keys from a Lookup<TKey,TElement> object after it has been created.

屬性

Count Count Count Count

取得 Lookup<TKey,TElement> 中的索引鍵/值集合組數目。Gets the number of key/value collection pairs in the Lookup<TKey,TElement>.

Item[TKey] Item[TKey] Item[TKey] Item[TKey]

取得以指定之索引鍵編製索引的值集合。Gets the collection of values indexed by the specified key.

方法

ApplyResultSelector<TResult>(Func<TKey,IEnumerable<TElement>,TResult>) ApplyResultSelector<TResult>(Func<TKey,IEnumerable<TElement>,TResult>) ApplyResultSelector<TResult>(Func<TKey,IEnumerable<TElement>,TResult>) ApplyResultSelector<TResult>(Func<TKey,IEnumerable<TElement>,TResult>)

將轉換函式套用至每個索引鍵及其相關值,並傳回結果。Applies a transform function to each key and its associated values and returns the results.

Contains(TKey) Contains(TKey) Contains(TKey) Contains(TKey)

判斷指定的索引鍵是否存在 Lookup<TKey,TElement> 中。Determines whether a specified key is in the Lookup<TKey,TElement>.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

判斷指定的物件是否等於目前的物件。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

傳回會逐一查看 Lookup<TKey,TElement> 的泛型列舉值。Returns a generic enumerator that iterates through the Lookup<TKey,TElement>.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

做為預設雜湊函式。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

取得目前執行個體的 TypeGets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

建立目前 Object 的淺層複製。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

傳回代表目前物件的字串。Returns a string that represents the current object.

(Inherited from Object)

明確介面實作

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

傳回在 Lookup<TKey,TElement> 中逐一查看的列舉值。Returns an enumerator that iterates through the Lookup<TKey,TElement>. 這個類別無法被繼承。This class cannot be inherited.

Extension Methods

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

傳回DataTable,其中包含副本DataRow物件,指定輸入IEnumerable<T>物件其中泛型參數TDataRowReturns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

複本DataRow至指定的物件DataTable,根據輸入IEnumerable<T>物件其中泛型參數TDataRowCopies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

複本DataRow至指定的物件DataTable,根據輸入IEnumerable<T>物件其中泛型參數TDataRowCopies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

篩選的項目IEnumerable根據指定的型別。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

啟用查詢的平行化作業。Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

將轉換IEnumerableIQueryableConverts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) 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) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName)

傳回包含來源集合中每個節點祖系的已篩選項目集合。Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 集合中只會包含具有相符之 XName 的項目。Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

傳回來源集合中每個文件和項目之子代節點的集合。Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) 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) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) 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. 集合中只會包含具有相符之 XName 的項目。Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) 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) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName)

傳回來源集合中每個項目和文件的已篩選子項目集合。Returns a filtered collection of the child elements of every element and document in the source collection. 集合中只會包含具有相符之 XName 的項目。Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) 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>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

傳回來源集合中每個文件和項目的子節點集合。Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

在來源集合中,從每一個節點的父節點移除這些節點。Removes every node in the source collection from its parent node.

適用於