En post pasados, vimos como realizar búsquedas de objetos en una lista genérica utilizando distintos métodos de la clase List. En este post, vamos a utilizar Linq para buscar objetos dentro de una lista genérica.
En primera instancia, vamos a utilizar la clase producto que hemos venido utilizando en post anteriores. Vamos a inicializar una lista de productos de la misma manera que lo hicimos en el post anterior:
List<Producto> listaProductos = new List<Producto>( )
{
new Producto ()
{
Id = 09,
Nombre = "Impresora Canon MP140",
PaisDeOrigen = "Japón",
Precio = 50
},
new Producto ()
{
Id = 15,
Nombre = "Age of Empires III",
PaisDeOrigen = "USA",
Precio = 29.99
},
new Producto ()
{
Id = 12,
Nombre = "Laptop Dell Vostro",
PaisDeOrigen = "USA",
Precio = 999
},
new Producto ()
{
Id = 33,
Nombre = "IPod Nano 2",
PaisDeOrigen = "USA",
Precio = 199.99
},
new Producto ()
{
Id = 26,
Nombre = "Audífonos JVC",
PaisDeOrigen = "Holanda",
Precio = 39.99
}
};
Seguidamente, vamos a crear una consulta utilizando LinqToObjects para buscar todos los objetos que tienen su país de origen igual a “USA”. El siguiente código nos muestra como hacerlo.
IEnumerable<Producto> resultado =
from producto in listaProductos
where producto.PaisDeOrigen == "USA"
select producto;
Console.WriteLine("----------------------------");
Console.WriteLine("Productos Originarios de USA");
foreach (Producto producto in resultado)
{
Console.WriteLine("----------------------------");
Console.WriteLine("Nombre: {0}\nPrecio: {1}",
producto.Nombre, producto.Precio);
}
Como podemos ver en el código anterior, Linq tiene una sintaxis muy similar a la de SQL Server, solamente que Linq además de poder ser utilizado en SQLServer (aunque parece que se va a descontinuar), es aplicable a Objetos, Xml, DataSet, EF y a los Data Services.
En este ejemplo, para retornar la lista de productos que tienen su país de origen como “USA”, se debe de asignar el resultado de la consulta a una lista genérica de productos, esta lista esta definida por IEnumerable<Producto>. A través de la claúsula from, estamos definiendo el origen de los datos, permitiendole a Linq iterar sobre cada producto para identificar las variables que cumplen con el criterio de selección a través de la palabra reservada from. Por último, se indica que se quiere proyectar ( seleccionar ) de la consulta realizada. En este caso escojimos seleccionar el producto como tal, pero como veremos en post posteriores, podemos utilizar tipos anónimos para seleccionar campos de un objeto, o de varios objetos utilizados como repositorio de datos.
El resultado al ejecutar la consulta anterior se puede ver en la siguiente imagen.
No hay comentarios:
Publicar un comentario