Enumerable.GroupBy 方法

定义

对序列中的元素进行分组。

重载

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

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

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

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

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

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

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

根据键选择器函数对序列中的元素进行分组。 通过使用比较器对键进行比较,并且通过使用指定的函数对每个组的元素进行投影。

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

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

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

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

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

根据指定的键选择器函数对序列中的元素进行分组。

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

根据指定的键选择器函数对序列中的元素进行分组,并使用指定的比较器对键进行比较。

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

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

public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

TElement

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

TResult

resultSelector 返回的结果值的类型。

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于将每个源元素映射到 IGrouping<TKey,TElement> 中的元素的函数。

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

用于从每个组中创建结果值的函数。

返回

IEnumerable<TResult>

类型为 TResult 的元素的集合,其中的每个元素都表示对一个组及其键的投影。

例外

sourcekeySelectorelementSelectorresultSelectornull

示例

下面的代码示例演示如何使用 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
    */
}

注解

在查询表达式语法中, group by (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>, IEqualityComparer<TKey>)

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

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

public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

TElement

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

TResult

resultSelector 返回的结果值的类型。

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于将每个源元素映射到 IGrouping<TKey,TElement> 中的元素的函数。

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

用于从每个组中创建结果值的函数。

comparer
IEqualityComparer<TKey>

用于对键进行比较的 IEqualityComparer<T>

返回

IEnumerable<TResult>

类型为 TResult 的元素的集合,其中的每个元素都表示对一个组及其键的投影。

例外

sourcekeySelectorelementSelectorresultSelectornull

另请参阅

适用于

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

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

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

public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

TElement

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

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于将每个源元素映射到 IGrouping<TKey,TElement> 中的元素的函数。

返回

IEnumerable<IGrouping<TKey,TElement>>

C# 或 IEnumerable(Of IGrouping(Of TKey, TElement)) Visual Basic 中的 ,IEnumerable<IGrouping<TKey, TElement>>其中每个IGrouping<TKey,TElement>对象都包含类型TElement为和键的对象集合。

例外

sourcekeySelectorelementSelectornull

示例

下面的代码示例演示如何使用 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 对序列的元素进行分组。

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

// Uses method-based query syntax.
public static void GroupByEx1()
{
    // Create a list of pets.
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 },
                       new Pet { Name="Daisy", Age=4 } };

    // Group the pets using Age as the key value
    // and selecting only the pet's Name for each value.
    IEnumerable<IGrouping<int, string>> query =
        pets.GroupBy(pet => pet.Age, pet => pet.Name);

    // Iterate over each IGrouping in the collection.
    foreach (IGrouping<int, string> petGroup in query)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(petGroup.Key);
        // Iterate over each value in the
        // IGrouping and print the value.
        foreach (string name in petGroup)
            Console.WriteLine("  {0}", name);
    }
}

/*
 This code produces the following output:

 8
   Barley
 4
   Boots
   Daisy
 1
   Whiskers
*/

在查询表达式语法中, group by (C#) 或 Group By Into (Visual Basic) 子句将转换为 的调用 GroupBy。 以下示例中查询表达式的转换等效于上例中的查询。

IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;

备注

在 C# 或 Visual Basic 查询表达式中,元素和键选择表达式在调用 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 方法时以与参数位置相反的顺序出现。

注解

此方法通过使用延迟执行来实现。 即时返回值是一个对象,用于存储执行操作所需的所有信息。 在通过直接调用GetEnumerator其方法或在 C# For Eachforeach Visual Basic 中使用 来枚举对象之前,不会执行此方法表示的查询。

方法 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 返回对象的集合 IGrouping<TKey,TElement> ,其中一个对象对应遇到的每个非重复键。 是 IGrouping<TKey,TElement> 一个 IEnumerable<T> ,它还具有与其元素关联的键。

根据IGrouping<TKey,TElement>中生成每个 IGrouping<TKey,TElement>的第一个键的元素source的顺序生成对象。 分组中的元素按生成元素在 中 source出现的顺序生成。

默认相等比较器 Default 用于比较键。

另请参阅

适用于

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

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

根据键选择器函数对序列中的元素进行分组。 通过使用比较器对键进行比较,并且通过使用指定的函数对每个组的元素进行投影。

public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<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.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<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

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

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

elementSelector
Func<TSource,TElement>

用于将每个源元素映射到 IGrouping<TKey,TElement> 中的元素的函数。

comparer
IEqualityComparer<TKey>

用于比较键的 IEqualityComparer<T>

返回

IEnumerable<IGrouping<TKey,TElement>>

IEnumerable<IGrouping<TKey, TElement>> C# 中的 或 IEnumerable(Of IGrouping(Of TKey, TElement)) Visual Basic 中的 ,其中每个 IGrouping<TKey,TElement> 对象都包含类型TElement为 的对象和键的集合。

例外

sourcekeySelectorelementSelectornull

注解

此方法通过使用延迟执行来实现。 即时返回值是一个对象,用于存储执行操作所需的所有信息。 在通过直接调用GetEnumerator其方法或在 C# For Eachforeach Visual Basic 中使用 来枚举对象之前,不会执行此方法表示的查询。

方法 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) 返回对象的集合 IGrouping<TKey,TElement> ,其中一个对象对应遇到的每个非重复键。 是 IGrouping<TKey,TElement> 一个 IEnumerable<T> ,它还具有与其元素关联的键。

根据IGrouping<TKey,TElement>中生成每个 IGrouping<TKey,TElement>的第一个键的元素source的顺序生成对象。 分组中的元素按生成元素在 中 source出现的顺序生成。

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

如果根据 comparer将两个键视为相等,则选择第一个键作为该分组的键。

在查询表达式语法中, group by (C#) 或 Group By Into (Visual Basic) 子句将转换为 的调用 GroupBy。 有关详细信息和使用示例,请参阅 group 子句Group By 子句

另请参阅

适用于

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

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

public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

用于从每个组中创建结果值的函数。

返回

IEnumerable<TResult>

类型为 TResult 的元素的集合,其中的每个元素都表示对一个组及其键的投影。

例外

sourcekeySelectorresultSelectornull

示例

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

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

public static void GroupByEx3()
{
    // 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 objects by the Math.Floor of their 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),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // 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
    */
}

注解

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

另请参阅

适用于

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

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

public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

用于从每个组中创建结果值的函数。

comparer
IEqualityComparer<TKey>

用于对键进行比较的 IEqualityComparer<T>

返回

IEnumerable<TResult>

类型为 TResult 的元素的集合,其中的每个元素都表示对一个组及其键的投影。

例外

sourcekeySelectorresultSelectornull

另请参阅

适用于

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

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

根据指定的键选择器函数对序列中的元素进行分组。

public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);

类型参数

TSource

source 的元素类型。

TKey

keySelector 返回的键的类型。

参数

source
IEnumerable<TSource>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

返回

IEnumerable<IGrouping<TKey,TSource>>

IEnumerable<IGrouping<TKey, TSource>> C# 中的 或 IEnumerable(Of IGrouping(Of TKey, TSource)) Visual Basic 中的 ,其中每个IGrouping<TKey,TElement>对象包含一系列对象和一个键。

例外

sourcekeySelectornull

注解

此方法通过使用延迟执行来实现。 即时返回值是一个对象,用于存储执行操作所需的所有信息。 在通过直接调用GetEnumerator其方法或通过在 C# For Eachforeach Visual Basic 中使用 来枚举对象之前,不会执行此方法表示的查询。

方法 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) 返回 对象的集合 IGrouping<TKey,TElement> ,针对遇到的每个非重复键返回一个对象集合。 是 IGrouping<TKey,TElement> 一个 , IEnumerable<T> 它还具有与其元素关联的键。

根据IGrouping<TKey,TElement>中生成每个 IGrouping<TKey,TElement>的第一个键的元素source的顺序生成对象。 分组中的元素按它们在 中 source出现的顺序生成。

默认相等比较器 Default 用于比较键。

在查询表达式语法中, group by (C#) 或 Group By Into (Visual Basic) 子句转换为 的调用 GroupBy。 有关详细信息和使用示例,请参阅 group 子句Group By 子句

另请参阅

适用于

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

Source:
Grouping.cs
Source:
Grouping.cs
Source:
Grouping.cs

根据指定的键选择器函数对序列中的元素进行分组,并使用指定的比较器对键进行比较。

public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<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>

要对其元素进行分组的 IEnumerable<T>

keySelector
Func<TSource,TKey>

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

comparer
IEqualityComparer<TKey>

用于比较键的 IEqualityComparer<T>

返回

IEnumerable<IGrouping<TKey,TSource>>

IEnumerable<IGrouping<TKey, TSource>> C# 中的 或 IEnumerable(Of IGrouping(Of TKey, TSource)) Visual Basic 中的 ,其中每个 IGrouping<TKey,TElement> 对象包含对象的集合和键。

例外

sourcekeySelectornull

注解

此方法通过使用延迟执行来实现。 即时返回值是一个对象,用于存储执行操作所需的所有信息。 在通过直接调用GetEnumerator其方法或通过在 C# For Eachforeach Visual Basic 中使用 来枚举对象之前,不会执行此方法表示的查询。

方法 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) 返回 对象的集合 IGrouping<TKey,TElement> ,针对遇到的每个非重复键返回一个对象集合。 是 IGrouping<TKey,TElement> 一个 , IEnumerable<T> 它还具有与其元素关联的键。

根据IGrouping<TKey,TElement>中生成每个 IGrouping<TKey,TElement>的第一个键的元素source的顺序生成对象。 分组中的元素按它们在 中 source出现的顺序生成。

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

如果根据 comparer认为两个键相等,则选择第一个键作为该分组的键。

在查询表达式语法中, group by (C#) 或 Group By Into (Visual Basic) 子句转换为 的调用 GroupBy。 有关详细信息和使用示例,请参阅 group 子句Group By 子句

另请参阅

适用于