LINQ Group by in C#

Muhammad Maisam Abbas 16 febbraio 2024
LINQ Group by in C#

Questa esercitazione discuterà il metodo per raggruppare una lista di oggetti in base a un valore in C#.

LINQ Group by in C#

LINQ integra funzionalità di query di tipo SQL con strutture di dati in C#.

Supponiamo di avere una lista di oggetti della seguente classe.

class Car {
  public string Brand { get; set; }
  public int Model { get; set; }
}

Brand è il nome della marca dell’auto e Model è il numero di modello dell’auto. La proprietà Brand di più oggetti può essere la stessa, ma il numero Model deve essere diverso per ogni oggetto. Se vogliamo raggruppare la lista di oggetti in base al nome del marchio, possiamo utilizzare il metodo GroupBy in LINQ. Il seguente esempio di codice ci mostra come possiamo raggruppare oggetti di una classe specifica in base a un valore con il metodo GroupBy in LINQ.

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

namespace linq_goup_by {
  public class Car {
    public string Brand { get; set; }
    public int Model { get; set; }
    public Car(string b, int m) {
      Brand = b;
      Model = m;
    }
  }
  class Program {
    static void Main(string[] args) {
      List<Car> cars = new List<Car>();
      cars.Add(new Car("Brand 1", 11));
      cars.Add(new Car("Brand 1", 22));
      cars.Add(new Car("Brand 2", 12));
      cars.Add(new Car("Brand 2", 21));
      var results = from c in cars group c by c.Brand;
      foreach (var r in results) {
        Console.WriteLine(r.Key);
        foreach (Car c in r) {
          Console.WriteLine(c.Model);
        }
      }
    }
  }
}

Produzione:

Brand 1 11 22 Brand 2 12 21

Nel codice precedente, abbiamo prima dichiarato e inizializzato una lista di oggetti cars, quindi raggruppato i valori in base alla proprietà Brand e salvato nella variabile results.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn