Enumerable.ToDictionary 方法

定义

重载

名称 说明
ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

根据指定的键选择器和元素选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

根据指定的键选择器函数、比较器和元素选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

根据指定的键选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

根据指定的键选择器函数和键比较器从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

根据指定的键选择器和元素选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

类型参数

TSource

的元素 source的类型。

TKey

返回 keySelector的键的类型。

TElement

返回 elementSelector的值的类型。

参数

source
IEnumerable<TSource>

要从中创建的一 IEnumerable<T>Dictionary<TKey,TValue>

keySelector
Func<TSource,TKey>

用于从每个元素中提取键的函数。

elementSelector
Func<TSource,TElement>

一个转换函数,用于从每个元素生成结果元素值。

返回

Dictionary<TKey,TElement>

一个 Dictionary<TKey,TValue> ,其中包含从输入序列中选择的类型 TElement 值。

例外

sourcekeySelectorelementSelectornull.

-或-

keySelector 生成一个键,即 null.

keySelector 为两个元素生成重复键。

注解

该方法 ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 使用默认相等比较器 Default 比较键。

适用于

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

根据指定的键选择器函数、比较器和元素选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::Dictionary<TKey, TElement> ^ ToDictionary(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.Dictionary<TKey,TElement> ToDictionary<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 ToDictionary : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Element>
<Extension()>
Public Function ToDictionary(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 Dictionary(Of TKey, TElement)

类型参数

TSource

的元素 source的类型。

TKey

返回 keySelector的键的类型。

TElement

返回 elementSelector的值的类型。

参数

source
IEnumerable<TSource>

要从中创建的一 IEnumerable<T>Dictionary<TKey,TValue>

keySelector
Func<TSource,TKey>

用于从每个元素中提取键的函数。

elementSelector
Func<TSource,TElement>

一个转换函数,用于从每个元素生成结果元素值。

comparer
IEqualityComparer<TKey>

要比较键的一个 IEqualityComparer<T>

返回

Dictionary<TKey,TElement>

一个 Dictionary<TKey,TValue> ,其中包含从输入序列中选择的类型 TElement 值。

例外

sourcekeySelectorelementSelectornull.

-或-

keySelector 生成一个键,即 null.

keySelector 为两个元素生成重复键。

注解

null如果是comparer,则默认相等比较器Default用于比较键。

适用于

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

根据指定的键选择器函数从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

类型参数

TSource

的元素 source的类型。

TKey

返回 keySelector的键的类型。

参数

source
IEnumerable<TSource>

要从中创建的一 IEnumerable<T>Dictionary<TKey,TValue>

keySelector
Func<TSource,TKey>

用于从每个元素中提取键的函数。

返回

Dictionary<TKey,TSource>

包含键和值的 A Dictionary<TKey,TValue> 。 每个组中的值的顺序与在中 source的顺序相同。

例外

sourcekeySelectornull.

-或-

keySelector 生成一个键,即 null.

keySelector 为两个元素生成重复键。

示例

下面的代码示例演示如何使用 ToDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) 键选择器创建一个 Dictionary<TKey,TValue>

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

public static void ToDictionaryEx1()
{
    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 = "Adventure Works", Weight = 33.8, TrackingNumber = 4665518773L } };

    // Create a Dictionary of Package objects,
    // using TrackingNumber as the key.
    Dictionary<long, Package> dictionary =
        packages.ToDictionary(p => p.TrackingNumber);

    foreach (KeyValuePair<long, Package> kvp in dictionary)
    {
        Console.WriteLine(
            "Key {0}: {1}, {2} pounds",
            kvp.Key,
            kvp.Value.Company,
            kvp.Value.Weight);
    }
}

/*
 This code produces the following output:

 Key 89453312: Coho Vineyard, 25.2 pounds
 Key 89112755: Lucerne Publishing, 18.7 pounds
 Key 299456122: Wingtip Toys, 6 pounds
 Key 4665518773: Adventure Works, 33.8 pounds
*/
Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub ToDictionaryEx1()
    ' Create a list of Package values.
    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 = "Adventure Works", .Weight = 33.8, .TrackingNumber = 4665518773L}})

    ' Create a Dictionary that contains Package values,
    ' using TrackingNumber as the key.
    Dim dict As Dictionary(Of Long, Package) =
    packages.ToDictionary(Function(p) p.TrackingNumber)

    ' Display the results.
    Dim output As New System.Text.StringBuilder
    For Each kvp As KeyValuePair(Of Long, Package) In dict
        output.AppendLine("Key " & kvp.Key & ": " &
                      kvp.Value.Company & ", " &
                      kvp.Value.Weight & " pounds")
    Next
    Console.WriteLine(output.ToString())
End Sub

' This code produces the following output:
'
' Key 89453312: Coho Vineyard, 25.2 pounds
' Key 89112755: Lucerne Publishing, 18.7 pounds
' Key 299456122: Wingtip Toys, 6 pounds
' Key 4665518773: Adventure Works, 33.8 pounds

注解

该方法 ToDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) 使用默认相等比较器 Default 比较键。

适用于

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

根据指定的键选择器函数和键比较器从 Dictionary<TKey,TValue> 创建 IEnumerable<T>

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

类型参数

TSource

的元素 source的类型。

TKey

返回 keySelector的键的类型。

参数

source
IEnumerable<TSource>

要从中创建的一 IEnumerable<T>Dictionary<TKey,TValue>

keySelector
Func<TSource,TKey>

用于从每个元素中提取键的函数。

comparer
IEqualityComparer<TKey>

要比较键的一个 IEqualityComparer<T>

返回

Dictionary<TKey,TSource>

包含键和值的 A Dictionary<TKey,TValue> 。 每个组中的值的顺序与在中 source的顺序相同。

例外

sourcekeySelectornull.

-或-

keySelector 生成一个键,即 null.

keySelector 为两个元素生成重复键。

注解

null如果是comparer,则默认相等比较器Default用于比较键。

适用于