SELECT
Lo primero que vamos a necesitar es el contexto de datos, que habiamos creado en el paso anterior.(http://www.devjoker.com/contenidos/Métodos-extensores/341/LINQ-con-métodos-Extensores-y-expresiones-lambda.aspx)
DataClasses1DataContext db = new DataClasses1DataContext();
|
Siempre debemos liberar los recursos cuando terminemos de trabajar con el contexto, para ello recomendamos incluirlo dentro de un bloque using.
Ejemplo 1:
El siguiente ejemplo obtiene el resultado de una consulta muy simple para un determinado código representado por la variable miCodigo.
string miCodigo="2"; IQueryable <ALLUsuarioSolicitud> resultado = db.ALLUsuarioSolicituds .Where(( ALLUsuarioSolicitud f) => f.CodigoSolicitud == miCodigo) .Select(s=>s) ;
|
Podemos ver el resultado de la consulta con un bucle foreach.
foreach (ALLUsuarioSolicitud dato in resultado){ Console.WriteLine("{0} {1}", dato.CodigoSolicitud, dato.PersonaContacto); }
|
Este método extensor haría lo mismo que el anterior pero aprovechando las bondades de las expresiones lambda.
IQueryable <ALLUsuarioSolicitud> resultado = db.ALLUsuarioSolicituds.Where( f => f.CodigoSolicitud == miCodigo);
|
Por supuesto, MicroSoft proporciona una forma mas sencilla de escribir las cosas, "azucar sintactico" para unos ... o sencillamente "vaselina" jeje.
IQueryable <ALLUsuarioSolicitud> res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo;
|
Cuando el compilador compila estas lineas, las traduce a expresiones lamba. No hay ninguna diferencia con el código anterior, salvo que de este modo resulta más comodo y "natural" ya que es una sintaxis mas parecida a SQL.
Este método es el mismo que el anterior pero sin declararlo de tipo IQueyable. Con esto, el compilador, lo declara como tipo anónimo y crea las clases en tiempo de diseño.
var resultado = db.ALLUsuarioSolicitud.Where( f => f.CodigoSolicitud == miCodigo);
|
Por supuesto tambien funciona de esta forma ...
var res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo;
|
Si miramos el SQL haría lo siguiente:
SELECT CodigoSolicitud , NombreEmpresa , Direccion , CiudadId , ProvinciaId , PaisId , CodigoPostal , Telefono , Fax , Email , Web , PersonaContacto , IdiomaId , Cargo , Usuario , Clave FROM [dbo].[ALLUsuarioSolicitud] AS [t0]WHERE ([t0].[CodigoSolicitud] = @p0)
|
A continuación mostramos más ejemplos.
Ejemplo 2:
IQueryable <ALLUsuarioSolicitud> resultado = db.ALLUsuarioSolicituds.Where( f => ((f.CodigoSolicitud == miCodigo) && (f.Direccion == "Castellana")));
|
IQueryable <ALLUsuarioSolicitud> res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo && u.Direccion == "Castellana";
|
SELECT CodigoSolicitud , NombreEmpresa , Direccion , CiudadId , ProvinciaId , PaisId , CodigoPostal , Telefono , Fax , Email , Web , PersonaContacto , IdiomaId , Cargo , Usuario , Clave FROM [dbo].[ALLUsuarioSolicitud] AS [t0]WHERE ([t0].[CodigoSolicitud] = @p0) AND ([t0].[Direccion] = "Castellana")
|
Ejemplo 3:
IQueryable <string> resultado = db.ALLUsuarioSolicituds.Where( f => f.CodigoSolicitud == miCodigo ).Select(f => f.Direccion);
|
IQueryable <string> res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo select u.Direccion;
|
SELECT [t0] .DireccionFROM [dbo].[ALLUsuarioSolicitud] AS [t0]WHERE ( [t0].CodigoSolicitud = @p0)
|
Ejemplo 4:
En este ejemplo mostramos como devolver un tipo que hemos creado nosotros, instanciandolo con los datos leidos a través de Linq.
class CustomerTuple{ public string String1; public string String2; public CustomerTuple(string A, string B) { this.String1 = A; this.String2 = B; } }
|
IQueryable <CustomerTuple> resultado = db.ALLUsuarioSolicituds.Where( f => f.CodigoSolicitud == CodigoSolicitud).Select( f => new CustomerTuple(f.PersonaContacto, f.Email));
|
IQueryable <CustomerTuple> res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo select new CustomerTuple(u.PersonaContacto, u.Email);
|
SELECT [t0] .PersonaContacto, [t0] .EmailFROM [dbo].[ALLUsuarioSolicitud] AS [t0]WHERE ([t0].CodigoSolicitud = @p0)
|
Ejemplo 5:
var resultado = db.ALLUsuarioSolicituds.Where( f => f.CodigoSolicitud == CodigoSolicitud).Select( f => new { PersonaContacto = f.PersonaContacto, Email = f.Email });
|
var res = from u in db.ALLUsuarioSolicituds where u.CodigoSolicitud == miCodigo select new { PersonaContacto = u.PersonaContacto, Email = u.Email };
|
Hace exactamente lo mismo que el ejemplo anterior pero almacenando el resultado con un tipo anónimo.
SELECT [t0] .PersonaContacto, [t0] .EmailFROM [dbo].[ALLUsuarioSolicitud] AS [t0]WHERE ([t0].CodigoSolicitud = @p0)
|
Ejemplo 6:
ALLUsuarioSolicitud resultado = ( db.ALLUsuarioSolicituds.Where( f => f.CodigoSolicitud == CodigoSolicitud ).Select( f => new { PersonaContacto = f.PersonaContacto, Email = f.Email }));
|
Esta forma de declarar la variable resultado no lo aconsejo ya que si se da el caso de que no hay resultados en la base de datos saltará una excepción. Siempre se debería de envolver en un bloque de código try … catch.