Operatori di raggruppamento in LINQ

Gli operatori inseriscono i dati in alcuni gruppi in base a un attributo condiviso comune.

Operatore Descrizione Sintassi delle espressioni di query C # Sintassi delle espressioni di query VB
Raggruppa per Organizza una sequenza di elementi in gruppi e restituiscili come una raccolta IEnumerable di tipo IGrouping <chiave, elemento> gruppo ... per -o- gruppo ... per ... in ... Group ... By ... Into ...
ToLookup Eseguire un'operazione di raggruppamento in cui viene restituita una sequenza di coppie di chiavi Non applicabile Non applicabile

Esempio di GroupBy - Espressione di query

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

Quando il codice sopra in C # o VB viene compilato ed eseguito, produce il seguente risultato:

Odd numbers: 
35 
3987 
199 
329 

Even numbers: 
44 
200 
84 
4 
446 
208