信息
您所需的主题如下所示。但此主题未包含在此库中。
此主题尚未评级 - 评价此主题

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

根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值。 通过使用指定的函数对每个组的元素进行投影。

命名空间:  System.Linq
程序集:  System.Core(在 System.Core.dll 中)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector,
	Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

每个 IGrouping<TKey, TElement> 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型:System.Collections.Generic.IEnumerable<TSource>
要对其元素进行分组的 IEnumerable<T>
keySelector
类型:System.Func<TSource, TKey>
用于提取每个元素的键的函数。
elementSelector
类型:System.Func<TSource, TElement>
用于将每个源元素映射到 IGrouping<TKey, TElement> 中的元素的函数。
resultSelector
类型:System.Func<TKey, IEnumerable<TElement>, TResult>
用于从每个组中创建结果值的函数。

返回值

类型:System.Collections.Generic.IEnumerable<TResult>
TResult 类型的元素的集合,其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中,可以在 IEnumerable<TSource> 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时,请省略第一个参数。有关更多信息,请参见扩展方法 (Visual Basic)扩展方法(C# 编程指南).

在查询表达式语法中,group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。

下面的代码示例演示如何使用 GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>) 对序列中的投影元素进行分组,以及随后对 TResult 类型的结果序列进行投影。


            class Pet
            {
                public string Name { get; set; }
                public double Age { get; set; }
            }

            public static void GroupByEx4()
            {
                // Create a list of pets.
                List<Pet> petsList =
                    new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                                   new Pet { Name="Boots", Age=4.9 },
                                   new Pet { Name="Whiskers", Age=1.5 },
                                   new Pet { Name="Daisy", Age=4.3 } };

                // Group Pet.Age values by the Math.Floor of the age.
                // Then project an anonymous type from each group
                // that consists of the key, the count of the group's
                // elements, and the minimum and maximum age in the group.
                var query = petsList.GroupBy(
                    pet => Math.Floor(pet.Age),
                    pet => pet.Age,
                    (baseAge, ages) => new
                    {
                        Key = baseAge,
                        Count = ages.Count(),
                        Min = ages.Min(),
                        Max = ages.Max()
                    });

                // Iterate over each anonymous type.
                foreach (var result in query)
                {
                    Console.WriteLine("\nAge group: " + result.Key);
                    Console.WriteLine("Number of pets in this age group: " + result.Count);
                    Console.WriteLine("Minimum age: " + result.Min);
                    Console.WriteLine("Maximum age: " + result.Max);
                }

                /*  This code produces the following output:

                    Age group: 8
                    Number of pets in this age group: 1
                    Minimum age: 8.3
                    Maximum age: 8.3

                    Age group: 4
                    Number of pets in this age group: 2
                    Minimum age: 4.3
                    Maximum age: 4.9

                    Age group: 1
                    Number of pets in this age group: 1
                    Minimum age: 1.5
                    Maximum age: 1.5
                */
            }



.NET Framework

受以下版本支持:4.5、4、3.5

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows 应用商店应用的 .NET

受以下版本支持:Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

并不是.NET Framework 对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求.
本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

显示:
© 2014 Microsoft. 版权所有。