Enumerable.ToLookup メソッド

定義

Lookup<TKey,TElement> からジェネリックの IEnumerable<T> を作成します。

オーバーロード

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

各要素から結果の要素値を生成する変換関数。

戻り値

ILookup<TKey,TElement>

入力シーケンスから選択された TElement 型の値を格納する Lookup<TKey,TElement>

例外

sourcekeySelector、または elementSelector は、null です。

次のコード例は、を使用して 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> 値のコレクションにキーをマップする1対多のディクショナリであるを返します。 は、キーと1対 Lookup<TKey,TElement> 1 のマッピングを1つの値に対して実行するとは異なり Dictionary<TKey,TValue> ます。

既定の等値比較子 Default は、キーの比較に使用されます。

適用対象

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

指定されたキー セレクター関数、比較子、および要素セレクター関数に従って、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>

戻り値

ILookup<TKey,TElement>

入力シーケンスから選択された TElement 型の値を格納する Lookup<TKey,TElement>

例外

sourcekeySelector、または elementSelector は、null です。

注釈

メソッドは、 ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) Lookup<TKey,TElement> 値のコレクションにキーをマップする1対多のディクショナリであるを返します。 は、キーと1対 Lookup<TKey,TElement> 1 のマッピングを1つの値に対して実行するとは異なり Dictionary<TKey,TValue> ます。

がの場合 comparer null 、キーの比較には既定の等値比較子 Default が使用されます。

適用対象

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

指定されたキー セレクター関数に従って、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>

キーと値を格納している Lookup<TKey,TElement>。 各グループ内の値は source と同じ順序になります。

例外

source または keySelectornull です。

注釈

メソッドは、 ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) Lookup<TKey,TElement> 値のコレクションにキーをマップする1対多のディクショナリであるを返します。 は、キーと1対 Lookup<TKey,TElement> 1 のマッピングを1つの値に対して実行するとは異なり Dictionary<TKey,TValue> ます。

既定の等値比較子 Default は、キーの比較に使用されます。

適用対象

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

指定されたキー セレクター関数およびキーの比較子に従って、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>

キーと値を格納している Lookup<TKey,TElement>。 各グループ内の値は source と同じ順序になります。

例外

source または keySelectornull です。

注釈

メソッドは、 ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) Lookup<TKey,TElement> 値のコレクションにキーをマップする1対多のディクショナリであるを返します。 は、 Lookup<TKey,TElement> Dictionary<TKey,TValue> キーの1対1のマッピングを1つの値に対して実行するとは異なります。

がの場合 comparer null 、キーの比較には既定の等値比較子 Default が使用されます。

適用対象