Enumerable.ToDictionary 方法

定义

重载

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

Source:
ToCollection.cs
Source:
ToCollection.cs

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

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<ValueTuple<TKey,TValue>>

要从中创建字典的枚举。

comparer
IEqualityComparer<TKey>

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

返回

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

例外

source 是一个 null 引用。

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

注解

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

适用于

.NET 9 和 .NET 8
产品 版本
.NET 8, 9

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

Source:
ToCollection.cs
Source:
ToCollection.cs

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

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

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<KeyValuePair<TKey,TValue>>

要从中创建字典的枚举。

comparer
IEqualityComparer<TKey>

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

返回

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

例外

source 是一个 null 引用。

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

注解

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

适用于

.NET 9 和 .NET 8
产品 版本
.NET 8, 9

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

Source:
ToCollection.cs
Source:
ToCollection.cs

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

C#
public static System.Collections.Generic.Dictionary<TKey,TValue> ToDictionary<TKey,TValue> (this System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> source);

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<KeyValuePair<TKey,TValue>>

要从中创建字典的枚举。

返回

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

例外

source 是一个 null 引用。

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

适用于

.NET 9 和 .NET 8
产品 版本
.NET 8, 9

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

Source:
ToCollection.cs
Source:
ToCollection.cs

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

C#
public static System.Collections.Generic.Dictionary<TKey,TValue> ToDictionary<TKey,TValue> (this System.Collections.Generic.IEnumerable<(TKey Key, TValue Value)> source);

类型参数

TKey

元素 source中的键的类型。

TValue

的 元素 source中的值的类型。

参数

source
IEnumerable<ValueTuple<TKey,TValue>>

要从中创建字典的枚举。

返回

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

例外

source 是一个 null 引用。

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

适用于

.NET 9 和 .NET 8
产品 版本
.NET 8, 9

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>

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

类型参数

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 来比较键。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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>

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

类型参数

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 来比较键。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

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

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

C#
public static System.Collections.Generic.Dictionary<TKey,TSource> ToDictionary<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);

类型参数

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>

C#
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
*/

注解

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

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

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

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

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

类型参数

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 来比较键。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0