InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Linq y Métodos extensores
LINQ con métodos Extensores y expresiones lambda
Métodos Extensores: SELECT
Métodos Extensores: INNER JOIN
También puedes ver ...
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Métodos Extensores: INNER JOIN
LINQ con métodos Extensores y expresiones lambda
Insertar en una Tabla usando Linq2SQL (Linq To SQL)
Primeros pasos con Linq2SQL (Linq To SQL)
Novedades en C# 3.0 - Primeros pasos con LINQ

Afiliados
La Web del programador
MundoProgramacion


 

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.


Inicio | Linq y Métodos extensores LINQ con métodos Extensores y expresiones lambdaLinq y Métodos extensoresMétodos Extensores: INNER JOIN Versión para imprimir Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Linq y Métodos extensores LINQ con métodos Extensores y expresiones lambdaLinq y Métodos extensoresMétodos Extensores: INNER JOIN Versión para imprimir

Métodos Extensores: SELECT
Autor: David Del Pino Corredor
Visitas: 596 Fecha de publicación: 03/04/2008
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.




18/08/2008 SQL Server 2008
Visitas: 39 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 131 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ
Visitas: 161 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 123 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 278 | Comentarios: 5 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 4990 | Comentarios: 4 | Archivo: Articulos
Categorias: C#|Transact-SQL|LinQ
Visitas: 603 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Studio
Visitas: 1402 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
MAQUINAS VIRTUALES por victor ... [WIN 98/NT/2000/XP] 0 19/08/2008
Y lo mismo en WEB por systemat ... [C#] 1 18/08/2008
Manual del minicom de Linux con fotos. por Meta ... [UNIX] 4 17/08/2008
PROGRAMACION por JUANMA ... [Visual Basic .NET] 1 19/08/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 9 02/05/2007
Codigo salir por Jazmin ... [ASP.NET] 1 18/08/2008
EXPORTAR DATOS A ARCHIVOS PLANOS. por WIX ... [ORACLE] 10 06/08/2007
formulario por artdark ... [C#] 2 04/08/2008
Codigo salir por Jazmin ... [ASP.NET] 0 18/08/2008
cambiar de modo un gried view por ivan ... [ASP.NET] 0 18/08/2008
ayuda urgente porfavor por vicancer ... [ASP.NET] 0 18/08/2008
pollo por hajaj ... [Actualidad] 1 15/08/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
24/07/2006 SQL Dinamico    forma parte de...Tutorial PL/SQL
09/10/2006 Cadenas de texto    forma parte de...Tutorial C#
22/10/2005 Tablas    forma parte de...Tutorial SQL
09/08/2007 Como mostrar el formato de fecha corta en un gridView
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
25/08/2007 Variables en Transact SQL    forma parte de...Tutorial de Transact SQL
03/10/2006 Introduccion a C#    forma parte de...Tutorial C#
21/02/2007 BULK COLLECT    forma parte de...Tutorial PL/SQL
28/08/2006 Ubuntu en VmWare con VMware Tools
11/06/2008 Problemas con el diseñador Web de Visual Studio 2008

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]