对数据分组 (C#)

分组是指将数据分到不同的组,使每组中的元素拥有公共的属性。

下图演示了对字符序列进行分组的结果。 每个组的键是字符。

关系图显示 LINQ 分组操作。

下一节列出了对数据元素进行分组的标准查询运算符方法。

方法

方法名 描述 C# 查询表达式语法 详细信息
GroupBy 对共享通用属性的元素进行分组。 每组由一个 IGrouping<TKey,TElement> 对象表示。 group … by

\- 或 -

group … by … into …
Enumerable.GroupBy

Queryable.GroupBy
ToLookup 将元素插入基于键选择器函数的 Lookup<TKey,TElement>(一种一对多字典)。 不适用。 Enumerable.ToLookup

查询表达式语法示例

下列代码示例根据奇偶性,使用 group by 子句对列表中的整数进行分组。

List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };  
  
IEnumerable<IGrouping<int, int>> query = from number in numbers  
                                         group number by number % 2;  
  
foreach (var group in query)  
{  
    Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");  
    foreach (int i in group)  
        Console.WriteLine(i);  
}  
  
/* This code produces the following output:  
  
    Odd numbers:  
    35  
    3987  
    199  
    329  
  
    Even numbers:  
    44  
    200  
    84  
    4  
    446  
    208  
*/  

请参阅