Grupo LINQ por em C#

Muhammad Maisam Abbas 12 outubro 2023
Grupo LINQ por em C#

Este tutorial discutirá o método para agrupar uma lista de objetos por um valor em C#.

Grupo LINQ por em C#

O LINQ integra a funcionalidade de consulta semelhante a SQL com estruturas de dados em C#.

Suponha que temos uma lista de objetos da seguinte classe.

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

Brand é o nome da marca do carro e Model é o número do modelo do carro. A propriedade Brand de vários objetos pode ser a mesma, mas o número do Model precisa ser diferente para cada objeto. Se quisermos agrupar a lista de objetos pelo nome da marca, podemos usar o método GroupBy no LINQ. O exemplo de código a seguir nos mostra como podemos agrupar objetos de uma classe específica por algum valor com o método GroupBy no 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);
        }
      }
    }
  }
}

Resultado:

Brand 1 11 22 Brand 2 12 21

No código acima, primeiro declaramos e inicializamos uma lista de objetos cars e depois agrupamos os valores pela propriedade Brand e salvamos na variável 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