Un ejemplo de una consulta LINQ en C# que realiza un agrupamiento de datos de una lista (list
) basada en el atributo Id
de los objetos, y luego organiza los datos agrupados en un nuevo formato.
public class Person
{
public int Id { get; set; }
public string? Car { get; set; }
}
static void Main(string[] args)
{
List<Person> list = [
new () { Id = 1, Car = "Toyota" },
new () { Id = 1, Car = "Honda" },
new () { Id = 2, Car = "Ford" },
new () { Id = 2, Car = "Chevrolet" },
new () { Id = 1, Car = "Mazda" },
new () {Id = 3,Car="Corvete"},
];
var result = (
from p in list
group p.Car by p.Id into g
select new
{
PersonId=g.Key,
Cars=g.OrderBy(car=>car).ToList()
}
);
foreach ( var p in result)
{
Console.WriteLine($"PersonId: {p.PersonId}");
Console.WriteLine($"Cars");
foreach (var item in p.Cars)
{
Console.WriteLine($"- {item}");
}
Console.WriteLine();
}
Console.WriteLine();
}
Definir la clase con las propiedades correspondientes. Ejemplo:
**public class Person {}**
.Definir en una lista cada una de las propiedades asociadas a la clase antes definida agregando sus respectivos datos.
Agrupa los valores de la propiedad
Car
de cada objeto por su correspondienteId
. Usando group by de LINQ.
- Dentro de cada grupo, organiza los elementos de Car en un orden específico.
- Uso de select new, para crear una nueva lista de objetos con las siguientes propiedades:
PersonId: La clave del grupo (
Id
).Cars: Los valores agrupados de
Car
, ordenados alfabéticamente o numéricamente (según el tipo deCar
), convertidos en una lista.
Ejecución:
Top comments (0)