LINQ分组操作

运算符将数据基于一个共同的共享属性放入一些分组

操作 描述 C#查询表达式语法 VB查询表达式语法
GroupBy 组织项目的顺序组,并将其返回IEnumerable类型的集合IGrouping<key, element> group … by -or- group … by … into … Group … By … Into …
ToLookup 执行在其中的密钥对的序列被返回分组运算 不适用 不适用

GroupBy示例- 查询表达式

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators
{
  class Program
  {
     static void Main(string[] args)
     {
        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);
        }
              Console.ReadLine();                
     }
  }
}

VB

Module Module1
  Sub Main()
     Dim numbers As New System.Collections.Generic.List(Of Integer)(
     New Integer() {35, 44, 200, 84, 3987, 4, 199, 329, 446, 208})

     Dim query = From number In numbers 
                 Group By Remainder = (number Mod 2) Into Group
     
     For Each group In query
        Console.WriteLine(If(group.Remainder = 0, vbCrLf &"Even numbers:", vbCrLf &"Odd numbers:"))
        For Each num In group.Group           
           Console.WriteLine(num)
        Next 
     Next 
           Console.ReadLine()
  End Sub
End Module

当在C#或VB上面的代码被编译和执行时,它产生了以下结果:

Odd numbers: 
35 
3987 
199 
329 

Even numbers: 
44 
200 
84 
4 
446 
208

上一篇: LINQ排序运算符 下一篇: LINQ转换操作