Continuo con la sección de capsulas de código, donde sin entrar mucho en detalle, pongo trozos de código con una funcionalidad muy concreta.
Hoy vamos a “jugar” un poco con LINQ y las expresiones lamda, y vamos a usar la potencia que nos ofrecen para facilitarnos un poco a la hora de encontrar elementos dentro de un listado del tipo IEnumerable con unos cuantos ejemplos concretos.
LINQ nos ofrece varios selectores a la hora de obtener los valores.
Where: Devuelve todos los valores que coincidan con el criterio seleccionada.
Single: Solo devuelve un valor, pero generara una excepción en el caso de que el criterio de selección devuelva null o mas de un valor. Si no estamos seguros de que el criterio de filtrado siempre vaya a devolver un valor podemos usar SingleOrDefault, que devuelve null en caso de no tener ningún resultado. Si no estamos seguros de que vaya a devolver solo un valor, tenemos que usar Where, o tenemos la opción de usar First.
First: Devuelve el valor del primer elemento que coincida con el criterio de filtrado. Aquí también témenos la opción de usar FirstOrDefault.
Unos ejempolos:
string busqueda = "criterio";
List<string> Lista = new List<string>();
//SINGLE
string result = Lista.Single(s => s == busqueda);
//WHERE
IEnumerable<string> results = Lista.Where(s => s == busqueda);
//FIRST
string result = Lista.First(s => s == busqueda);
¿Sencillo verdad?
Pero que pasa si el listado que tenemos es por ejemplo de una clase propia que hemos creado nosotros. Tenemos el Cast<T>
Un ejemplo:
var imagenBorrar = imagenes.Items.Cast<ImagenGaleria>().Single(i => i.Id == _idImagenBorrar);
imagenes.Items.Remove(imagenBorrar);
Eso es todo por hoy, espero que os sirva.
Nos leemos!
Gracias por la información. Lo utilizare en mi web de Mariscada Gallega a domicilio
ResponderEliminar