TOC

This article has been localized into Spanish by the community.

LINQ.:

Introducción.

LINQ, abreviatura de Language-Integrated Query , es una tecnología integrada en el .NET framework que le permitirá consultar y manipular fácilmente los datos en varias fuentes. En otras palabras, puede trabajar con datos de la misma manera, sin importar si el origen es una lista simple, un diccionario, un archivo XML o una tabla de base de datos. LINQ viene en dos sabores de sintaxis: la sintaxis de consulta y el método. Discutiremos ambos en profundidad en el próximo artículo, pero para entusiasmarte con LINQ, permíteme darte una demostración rápida de cuán elegante LINQ puede consultar una fuente de datos simple:

var names = new List<string>()  
{  
    "John Doe",  
    "Jane Doe",  
    "Jenna Doe",  
    "Joe Doe"  
};  

// Get the names which are 8 characters or less, using LINQ  
var shortNames = from name in names where name.Length <= 8 orderby name.Length select name;

foreach (var name in shortNames)  
    Console.WriteLine(name);

¡En una sola línea, usando la sintaxis de consulta LINQ , puedo pedir todos los nombres en la lista que tengan 8 caracteres (o menos) de largo y ordenarlos por longitud! ¡Eso es solo UNA línea de código y solo muestra una pequeña fracción de lo que LINQ es capaz de hacer! En los siguientes artículos, analizaré todas las increíbles posibilidades que obtienes al usar LINQ, pero primero, deberíamos hablar un poco sobre cómo y cuándo se ejecuta una consulta LINQ.

Ejecución diferida.

La mayoría de los programadores están acostumbrados a ver que el código se ejecuta línea tras línea, por lo que puede sorprenderle que una consulta LINQ no se ejecute tan pronto como se toque la línea con la parte de consulta. En cambio, LINQ se ejecuta tan pronto como comience a usar los datos, p.e. cuando lo repites o llamas a un método como ToList () o Count (). Eso también significa que puede crear una consulta en varias líneas, donde realiza múltiples operaciones, pero los datos no se obtienen hasta que los necesita. Permítanme ilustrar con una versión extendida de nuestro ejemplo anterior, donde cambiamos a la method syntax en lugar de la sintaxis de consulta anterior:

var names = new List<string>()
{
    "John Doe",
    "Jane Doe",
    "Jenna Doe",
    "Joe Doe"
};

// Get the names which are 8 characters or less, using LINQ
var shortNames = names.Where(name => name.Length <= 8);
// Order it by length
shortNames = shortNames.OrderBy(name => name.Length);
// Add a name to the original list
names.Add("Zoe Doe");

// Iterate over it - the query has not actually been executed yet!
// It will be as soon as we hit the foreach loop though!
foreach (var name in shortNames)
    Console.WriteLine(name);

He agregado algunos comentarios al código, por lo que debería ser fácil de seguir. Además, tenga en cuenta que he agregado un poco de prueba allí: después de hacer la consulta, agrego un nombre a la lista original. Ahora, si la consulta ya se había ejecutado, esto, por supuesto, no entraría en el resultado, pero lo hace, porque se agrega después de la consulta, pero ANTES de que realmente usemos los datos, lo que sucede en el foreach bucle.

Esto no es de gran importancia cuando se consulta una lista con 4 o 5 nombres, pero imagine que, en cambio, tenemos una lista de 10 millones de entradas o tal vez una base de datos remota en alguna parte. En ese caso, es muy importante que no ejecutemos múltiples consultas cuando solo podemos ejecutar una consulta.

Resumen.

LINQ le permite consultar de forma simple y nativa varias fuentes de datos utilizando la misma sintaxis, ya sea la sintaxis de consulta o la sintaxis del método, que discutiremos en el próximo artículo.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!