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