En este fragmento os mostramos ciertas operaciones básicas que se pueden utilizar con las listas en C#. Son muy útiles para filtrar, ordenar, buscar y agrupar elementos de las listas IEnumerable.
El comando que equivale a la condición Where de una clausula SQL sería de la siguiente manera.
//Seleccionamos todos los estudiantes con la edad de 21 años
List<Estudiante> listaEstudiantesEdad = new List<Estudiante>();
listaEstudiantesEdad = listaEstudiantes.Where(estu => estu.Edad == 21).ToList();
//Si lo hacemos por el método tradicional
listaEstudiantesEdad = new List<Estudiante>();
foreach (var estu in listaEstudiantes)
{
if (estu.Edad == 21)
{
listaEstudiantesEdad.Add(estu);
}
}
//Puede contener varias clausulas
listaEstudiantesEdad = listaEstudiantes.Where(estu => estu.Edad == 21 && estu.Nota >= 5).ToList();Como podéis comprobar se reduce mucho el código que hay que escribir. Otras funciones interesantes las podéis ver en el siguiente código.
//La sentencia ForEach permite hacer un bucle y recorrer todos los elementos en una sola línea de código
listaEstudiantes.ForEach(estu => estu.Nota == 8);
//Podemos ordenar la lista en sentido ascendente y descendente
listaEstudiants.OrderBy(estu=>estu.Edad);
listaEstudiants.OrderByDescending(estu=>estu.Edad);
//Eliminar todos los elementos que cumplan la condición
listaEstudiants.RemoveAll(estu=>estu.Nota <= 5);
int edadMax = listaEstudiants.Max(estu=>estu.Edad);
int edadMin = listaEstudiants.Min(estu=>estu.Edad);
//Podemos hacer una media de las notas de una manera muy simple
float mediaNotas = listaEstudiants.Sum(estu=>estu.Nota) / listaEstudiants.Count;Algo más complejo sería hacer una agrupación. En el siguiente ejemplo os mostramos como podemos agrupar una lista de estudiantes por edades y mostrarlo por consola.
//Creamos la query
var mismaEdad =
from estuidante in estudiantes
group estudiante by estudiante.Edad into grupoMismaEdad
orderby grupoMismaEdad.Key
select grupoMismaEdad;
foreach (var grupoEdad in mismaEdad)
{
Console.WriteLine("Edad en común: {0}", grupoEdad.Key);
//Recorremos todos los estudiantes con la misma edad
foreach (var estudiante in grupoEdad)
{
Console.WriteLine("\t{0}, {1} {2}", estudiante.Nombre, estudiante.Apellidos, estudiante.Edad);
}
}Linq es realmente una herramienta muy potente que nos puede ayudar a comprimir nuestro código dejándolo a la mínima expresión como habéis podido comprobar.


