Enumerable.ToDictionary 方法

定义

重载

ToDictionary<TKey,TValue>(IEnumerable<ValueTuple<TKey,TValue>>, IEqualityComparer<TKey>)

根据指定的键相等比较器从枚举创建字典。

ToDictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)

根据指定的键比较器从枚举创建字典。

ToDictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)

根据键类型的默认比较器从枚举创建字典。

ToDictionary<TKey,TValue>(IEnumerable<ValueTuple<TKey,TValue>>)

根据键类型的默认比较器从枚举创建字典。

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

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

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

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

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

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

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

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

ToDictionary<TKey,TValue>(IEnumerable<ValueTuple<TKey,TValue>>, IEqualityComparer<TKey>)

Source:
ToCollection.cs
Source:
ToCollection.cs

根据指定的键相等比较器从枚举创建字典。

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<ValueTuple<TKey,TValue>>

要从中创建字典的枚举。

comparer
IEqualityComparer<TKey>

用于比较键的相等比较器。

返回

包含 中的 source键和值的字典。

例外

source 是一个 null 引用。

source 包含一个或多个重复键。

注解

如果 comparernull,则使用默认相等比较器 Default 来比较键。

适用于

ToDictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)

Source:
ToCollection.cs
Source:
ToCollection.cs

根据指定的键比较器从枚举创建字典。

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<KeyValuePair<TKey,TValue>>

要从中创建字典的枚举。

comparer
IEqualityComparer<TKey>

用于比较键的相等比较器。

返回

包含 中的 source键和值的字典。

例外

source 是一个 null 引用。

source 包含一个或多个重复键。

注解

如果 comparernull,则使用默认相等比较器 Default 来比较键。

适用于

ToDictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)

Source:
ToCollection.cs
Source:
ToCollection.cs

根据键类型的默认比较器从枚举创建字典。

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<KeyValuePair<TKey,TValue>>

要从中创建字典的枚举。

返回

包含来自 source 的键和值的字典,并使用键类型的默认比较器。

例外

source 是一个 null 引用。

source 包含一个或多个重复键。

适用于

ToDictionary<TKey,TValue>(IEnumerable<ValueTuple<TKey,TValue>>)

Source:
ToCollection.cs
Source:
ToCollection.cs

根据键类型的默认比较器从枚举创建字典。

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<ValueTuple<TKey,TValue>>

要从中创建字典的枚举。

返回

包含来自 source 的键和值的字典,对键类型使用默认比较器。

例外

source 是一个 null 引用。

source 包含一个或多个重复键。

适用于

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

Source:
ToCollection.cs
Source:
ToCollection.cs
Source:
ToCollection.cs

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

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>

要从其创建 Dictionary<TKey,TValue>IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于从每个元素产生结果元素值的转换函数。

返回

Dictionary<TKey,TElement>

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

例外

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

Source:
ToCollection.cs
Source:
ToCollection.cs
Source:
ToCollection.cs

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

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

要从其创建 Dictionary<TKey,TValue>IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于从每个元素产生结果元素值的转换函数。

comparer
IEqualityComparer<TKey>

用于比较键的 IEqualityComparer<T>

返回

Dictionary<TKey,TElement>

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

例外

sourcekeySelectorelementSelectornull

- 或 -

keySelector 生成一个 null 的键。

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

注解

如果 comparernull,则使用默认相等比较器 Default 来比较键。

适用于

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

Source:
ToCollection.cs
Source:
ToCollection.cs
Source:
ToCollection.cs

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

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>

要从其创建 Dictionary<TKey,TValue>IEnumerable<T>

keySelector
Func<TSource,TKey>

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

返回

Dictionary<TKey,TSource>

一个包含键和值的 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>)

Source:
ToCollection.cs
Source:
ToCollection.cs
Source:
ToCollection.cs

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

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

要从其创建 Dictionary<TKey,TValue>IEnumerable<T>

keySelector
Func<TSource,TKey>

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

comparer
IEqualityComparer<TKey>

用于比较键的 IEqualityComparer<T>

返回

Dictionary<TKey,TSource>

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

例外

sourcekeySelectornull

- 或 -

keySelector 生成一个 null 的键。

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

注解

如果 comparernull,则使用默认相等比较器 Default 来比较键。

适用于