本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Enumerable.ToLookup<TSource, TKey, TElement> 方法 (IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)

 

创建 Lookup<TKey, TElement>IEnumerable<T> 根据指定的键选择器和元素选择器函数。

命名空间:   System.Linq
程序集:  System.Core(位于 System.Core.dll)

public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector
)

参数

source
Type: System.Collections.Generic.IEnumerable<TSource>

IEnumerable<T> 创建 Lookup<TKey, TElement> 从。

keySelector
Type: System.Func<TSource, TKey>

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

elementSelector
Type: System.Func<TSource, TElement>

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

返回值

Type: System.Linq.ILookup<TKey, TElement>

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

类型参数

TSource

中的元素的类型 source

TKey

返回的键的类型 keySelector

TElement

返回的值的类型 elementSelector

Exception Condition
ArgumentNullException

sourcekeySelectorelementSelectornull

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 方法将返回 Lookup<TKey, TElement>, ,一个一到多字典,其中将键映射到值的集合。 一个 Lookup<TKey, TElement> 不同于 Dictionary<TKey, TValue>, ,这将执行为单个值的键的一对一映射。

默认的相等比较 Default 用来对键进行比较。

下面的代码示例演示如何使用 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 => Convert.ToChar(p.Company.Substring(0, 1)),
                  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
*/

通用 Windows 平台
自 8 起可用
.NET Framework
自 3.5 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: