LINQ Group by en C#

Muhammad Maisam Abbas 16 febrero 2024
LINQ Group by en C#

Este tutorial discutirá el método para agrupar una lista de objetos por un valor en C#.

LINQ Group by en C#

LINQ integra una funcionalidad de consulta similar a SQL con estructuras de datos en C#.

Supongamos que tenemos una lista de objetos de la siguiente clase.

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

Brand es el nombre de la marca del automóvil y Model es el número de modelo del automóvil. La propiedad Brand de varios objetos puede ser la misma, pero el número de Model debe ser diferente para cada objeto. Si queremos agrupar la lista de objetos por el nombre de la marca, podemos usar el método GroupBy en LINQ. El siguiente ejemplo de código nos muestra cómo podemos agrupar objetos de una clase específica por algún valor con el método GroupBy en 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);
        }
      }
    }
  }
}

Producción :

Brand 1
11
22
Brand 2
12
21

En el código anterior, primero declaramos e inicializamos una lista de objetos cars y luego agrupamos los valores por la propiedad Brand y los guardamos en la variable 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

Artículo relacionado - Csharp LINQ