Empezamos con LINQ

Explicadas algunas de las novedades en los lenguajes en la versión 3.0 del Framework

Inicialización de objetos, Tipos inferidos, Tipos anonimos, Extensión de métodos

ya podemos mirarnos una sentencia LINQ y comprenderla paso a paso.

C#
var customquery =
from cust in customers
where (cust.City == “London” && cust.Balance > 500)
orderby cust.Balance descending
select new {Details=cust.Name + “:” + cust.Phone,
cust.Balance};
foreach(var custItem in customerQuery){
  Console.WriteLine(custItem.Details);
  Console.WriteLine(custItem.Balance);
}

Vb.Net
Dim customquery =
From cust In customers
Where (cust.City = “London” and cust.Balance > 500)
Order By cust.Balance Descending
Select new With {Details=cust.Name + “:” + cust.Phone,
cust.Balance}
For Each custItem In customerQuery
  Console.WriteLine(custItem.Details)
  Console.WriteLine(custItem.Balance)
Next

LINQ es la instrucción que empieza por From y termina en Select y como puedes ver es una sintaxis muy parecida a SQL estándard y su objetivo es buscar o filtrar listas de elementos. Más adelante verás que las listas no tienen porque ser colecciones en memoria, también pueden ser bases de datos.

Desmontando la sentencia

  • customquery : Tipo inferido por el resultado de la instrucción LINQ. En este caso un IEnumerable de un tipo anónimo tal y como puedes ver en la parte del Select.
  • cust : tipo inferido por los elementos de la colección customers. En el ejemplo se puede deducir que es algún tipo Customer.
  • Where : Expresión booleana para determinar que elementos queremos
  • Order By : Determina el orden en el resultado
  • Select : Tipo que queremos devolver en la instrucción LINQ. En este caso se trata de un tipo anónimo. No es necesario siempre devolver tipos anónimos, fijate que una instrucción como la siguiente devuelve los mismos elementos de la lista ordenados.
C#
var customquery =
from cust in customers
orderby cust.Balance descending
select cust;

Vb.Net
Dim customquery =
From cust In customers
Order By cust.Balance Descending
Select cust

Donde se aplica LINQ
LINQ es una extensión de método de la interfaz IEnumerable, por tanto, podemos aplicar LINQ en todas las colecciones que implementen esta interfaz que son prácticamente todas.

Que devuelve LINQ
Toda expresión LINQ devuelve un IEnumerable genérico, es decir un IEnumerable<T>, con una excepción, si devolvemos tipos anónimos entonces seria un IEnumerable de anónimos, pero como no puedo declarar una variable de ese tipo se trata con var o Dim tal y como has visto en el primer ejemplo. Ahora puedes ver como definimos el tipo devuelto en el segundo ejemplo:

C#
IEnumerable<Customer> customquery =
from cust in customers
orderby cust.Balance descending
select cust;

Vb.Net
Dim customquery as IEnumerable(Of Customer)
customquery =
From cust In customers
Order By cust.Balance Descending
Select cust
Advertisements

Un pensament sobre “Empezamos con LINQ

  1. Retroenllaç: Entity Framework Complex Type i ADO.NET Data Services | My freelancer life

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s