本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

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
)

參數

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

IEnumerable<T> 將其項目。

keySelector
Type: System.Func<TSource, TKey>

用來擷取各項目之索引鍵的函式。

elementSelector
Type: System.Func<TSource, TElement>

函式來對應每個來源項目中的項目 IGrouping<TKey, TElement>

resultSelector
Type: System.Func<TKey, IEnumerable<TElement>, TResult>

用來從各個群組建立結果值的函式。

傳回值

Type: System.Collections.Generic.IEnumerable<TResult>

集合型別的項目 TResult 其中每個項目代表投影的群組和其金鑰。

類型參數

TSource

項目的型別 source

TKey

所傳回的索引鍵類型 keySelector

TElement

在每個元素的型別 IGrouping<TKey, TElement>

TResult

所傳回的結果值的型別 resultSelector

在查詢運算式語法中, 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
    */
}

通用 Windows 平台
自 8 起供應
.NET Framework
自 3.5 起供應
可攜式類別庫
提供支援︰ 可攜式 .NET 平台
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應
Windows Phone
自 8.1 起供應
回到頁首
顯示: