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].Direccion

FROM [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].Email

FROM [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].Email

FROM [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.

Métodos Extensores: SELECT
David Del Pino Corredor

David es un Analista/Programador que trabaja en una consultoria. En su experiencia laboral ha tratado con varias tecnologías especialmente con SQL Server 2005 y .NET.
Fecha de alta:03/04/2008
Última actualizacion:03/04/2008
Visitas totales:8521
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com