Enumerable.ToLookup 方法

定義

Lookup<TKey,TElement>. 建立一個通用IEnumerable<T>

多載

名稱 Description
ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

根據指定的索引鍵選取器和項目選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

根據指定的索引鍵選取器函式、比較子和元素選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

根據指定的索引鍵選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

根據指定的索引鍵選取器函式和索引鍵比較子,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs

根據指定的索引鍵選取器和項目選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::ILookup<TKey, TElement> ^ ToLookup(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector);
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);
static member ToLookup : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> -> System.Linq.ILookup<'Key, 'Element>
<Extension()>
Public Function ToLookup(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement)) As ILookup(Of TKey, TElement)

類型參數

TSource

元素 source的類型。

TKey

由 返回 keySelector的金鑰類型。

TElement

由 返回 elementSelector的值類型。

參數

source
IEnumerable<TSource>

IEnumerable<T> 創造一個 Lookup<TKey,TElement> 來源。

keySelector
Func<TSource,TKey>

一個用來從每個元素中提取鍵值的函式。

elementSelector
Func<TSource,TElement>

一個轉換函數,從每個元素產生結果元素值。

傳回

Lookup<TKey,TElement> A 包含從輸入序列中選擇的值TElement

例外狀況

sourcekeySelectorelementSelectornull

範例

以下程式碼範例示範如何利用ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)鍵選擇函式和元素選擇函式來建立 。Lookup<TKey,TElement>

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

public static void ToLookupEx1()
{
    // Create a list of Packages.
    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
    // as the element values of the Lookup.
    ILookup<char, string> lookup =
        packages
        .ToLookup(p => p.Company[0],
                  p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup.
    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
*/
Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub ToLookupEx1()
    ' Create a list of Packages.
    Dim packages As New 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
    ' as the element values of the Lookup.
    Dim lookup 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 IGrouping in the Lookup.
    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("   " & str)
        Next
    Next

    ' Select a group of packages by indexing directly into the Lookup.
    Dim cgroup As IEnumerable(Of String) = lookup("C"c)

    output.AppendLine(vbCrLf & "Packages from Company names that start with 'C':")
    For Each str As String In cgroup
        output.AppendLine(str)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString())
End Sub

' 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
'
' Packages from Company names that start with 'C':
' Coho Vineyard 89453312
' Contoso Pharmaceuticals 670053128

備註

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 方法回傳一個 Lookup<TKey,TElement>,一個一對多的字典,將鍵對應到數值集合。 A Lookup<TKey,TElement>Dictionary<TKey,TValue>不同,後者會將鍵一一對應到單一值。

預設的等式比較器 Default 用於比較金鑰。

適用於

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs

根據指定的索引鍵選取器函式、比較子和元素選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::ILookup<TKey, TElement> ^ ToLookup(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member ToLookup : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.ILookup<'Key, 'Element>
<Extension()>
Public Function ToLookup(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), comparer As IEqualityComparer(Of TKey)) As ILookup(Of TKey, TElement)

類型參數

TSource

元素 source的類型。

TKey

由 返回 keySelector的金鑰類型。

TElement

由 返回 elementSelector的值類型。

參數

source
IEnumerable<TSource>

IEnumerable<T> 創造一個 Lookup<TKey,TElement> 來源。

keySelector
Func<TSource,TKey>

一個用來從每個元素中提取鍵值的函式。

elementSelector
Func<TSource,TElement>

一個轉換函數,從每個元素產生結果元素值。

comparer
IEqualityComparer<TKey>

還有 IEqualityComparer<T> 比較鑰匙。

傳回

Lookup<TKey,TElement> A 包含從輸入序列中選擇的值TElement

例外狀況

sourcekeySelectorelementSelectornull

備註

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) 方法回傳一個 Lookup<TKey,TElement>,一個一對多的字典,將鍵對應到數值集合。 A Lookup<TKey,TElement>Dictionary<TKey,TValue>不同,後者會將鍵一一對應到單一值。

comparernull則預設的等號比較器 Default 用於比較金鑰。

適用於

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs

根據指定的索引鍵選取器函式,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::ILookup<TKey, TSource> ^ ToLookup(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ToLookup : seq<'Source> * Func<'Source, 'Key> -> System.Linq.ILookup<'Key, 'Source>
<Extension()>
Public Function ToLookup(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As ILookup(Of TKey, TSource)

類型參數

TSource

元素 source的類型。

TKey

由 返回 keySelector的金鑰類型。

參數

source
IEnumerable<TSource>

IEnumerable<T> 創造一個 Lookup<TKey,TElement> 來源。

keySelector
Func<TSource,TKey>

一個用來從每個元素中提取鍵值的函式。

傳回

ILookup<TKey,TSource>

包含鍵與值的 A Lookup<TKey,TElement> 。 每個群組內的值順序與 中 source相同。

例外狀況

sourcekeySelectornull

備註

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) 方法回傳一個 Lookup<TKey,TElement>,一個一對多的字典,將鍵對應到數值集合。 A Lookup<TKey,TElement>Dictionary<TKey,TValue>不同,後者會將鍵一一對應到單一值。

預設的等式比較器 Default 用於比較金鑰。

適用於

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs
來源:
Lookup.cs

根據指定的索引鍵選取器函式和索引鍵比較子,從 Lookup<TKey,TElement> 建立 IEnumerable<T>

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::ILookup<TKey, TSource> ^ ToLookup(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member ToLookup : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.ILookup<'Key, 'Source>
<Extension()>
Public Function ToLookup(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IEqualityComparer(Of TKey)) As ILookup(Of TKey, TSource)

類型參數

TSource

元素 source的類型。

TKey

由 返回 keySelector的金鑰類型。

參數

source
IEnumerable<TSource>

IEnumerable<T> 創造一個 Lookup<TKey,TElement> 來源。

keySelector
Func<TSource,TKey>

一個用來從每個元素中提取鍵值的函式。

comparer
IEqualityComparer<TKey>

還有 IEqualityComparer<T> 比較鑰匙。

傳回

ILookup<TKey,TSource>

包含鍵與值的 A Lookup<TKey,TElement> 。 每個群組內的值順序與 中 source相同。

例外狀況

sourcekeySelectornull

備註

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) 方法回傳一個 Lookup<TKey,TElement>,一個一對多的字典,將鍵對應到數值集合。 A Lookup<TKey,TElement>Dictionary<TKey,TValue>不同,後者會將鍵對應到單一值進行一對一映射。

comparernull則預設的等號比較器 Default 用於比較金鑰。

適用於