Tecnologías Microsoft

Web Development

Hablemos de LINQ (1)

Hola antes que nada quiero compartirles lo que leí en un libro el día de hoy, espero y les sea de su agrado:

LINQ que significa (Language Integrated Query), podemos encontrar muchas definiciones de este tema, y realmente a veces nos confunde la idea de que algunos bloggers lo mencionan de tal forma que no cumple con las verdaderas características de este potente lenguaje.

Definiciones como:

  • LINQ es un modelo uniforme de programación para todo tipo de información. LINQ permite ejecutar consultas y manipular información con un modelo consistente que es independiente de los recursos de datos.
  • LINQ es otra herramienta para consultas SQL embebidas en código
  • LINQ es todavía una capa de abstracción de datos.

Todas estas descripciones son correctas, pero hay que tomar en cuenta algo importante:

LINQ puede hacer más de simples consultas SQL embebidas, es mas simple y fácil que un modelo de programación uniforme, y es más aya de una capa de modelado de información.

LINQ es una tecnología que simplifica y unifica la implementación de cualquier tipo de acceso a datos. LINQ no te obliga a utilizar una arquitectura específica, si no que te facilita la implementación de arquitecturas ya existentes para el acceso a datos.

Actualmente la información que se maneja por un programa puede pertenecer a diferentes dominios de datos, un array, un objeto, un documento XML, una base de datos, un archivo de texto, una clave de registro, un mensaje de correo electrónico, un mensaje de SOAP, un archivo de excel de office, en fin muchos recursos de datos.

Cada dominio de datos tiene un modelo de acceso específico, me refiero que por ejemplo si queremos hacer una consulta a base de datos ocupamos SQL, si queremos navegar en un XML usamos DOM o XQuery, si queremos sacar información de un array, mediante una iteración, si deseamos ver un documento de texto podemos ocupar Office, etc.

Realmente el problema es poder unificar todo este tipo de estructuras de acceso, que es lo que se ha venido intentando anteriormente. LINQ viene a resolver este tipo de problemas, brindándonos una manera uniforme de acceso y manipulación de información.

LINQ es un modelo de programación que introduce consultas como primer concepto de clase en cualquier lenguaje de .NET.

Por ejemplo:

var query=  from c in Customers where c.Country=="Italy" select c.CompanyName;

Ahora Visual Studio 2008 nos da la gran característica de tener un tipo de datos llamado var, por ejemplo si tenemos en este caso una variable var, y le asignamos una cadena como valor, identificara que el tipo de datos que se manejara sera string, de lo contrario si colocamos valores numéricos, identificará  que sean entero, flotante, decimales, etc.

Entonces decimos que en nuestra variable query va a contener nuestra consulta y la mostraremos de esta forma:

foreach (string name in query) {

Console.WriteLine (name);       }

Esta consulta también podemos aplicarla a SQL embebido, o a un dataset, o un array de objetos en memoria, o a muchos tipos de tipos de información, por ejemplo Customers puede ser una colección de objetos.

Customer[] Customers;

Customers puede ser un DataTable en un DataSet:

DataSet ds= GetDataSet();

DataTable Customers = ds.Tables["Customers"];

Customers puede ser una entidad de clase que describe una tabla fisicamente en una relacion en base de datos:

DataContext db=new DataContext (ConnectionString);

Table<Customer> Customers =db.GetTable<Customer>();

O bien Customers puede ser una entidad de clase que describe un modelo conceptual y que es indicado en una relación de base de datos.

NorthwindModel dataModel =new NorthwindModel();

ObjectQuery<Customer> Customers =dataModel.Customers;

Como podemos ver, es similar a sintaxis SQL a lo cual en LINQ se le conoce como expressiones de consulta. Los lenguajes que implementan SQL embebido definen solo una simple sintaxis para colocar sentencias SQL en diferentes lenguaje, pero digamos que estas sentencias no estan integradas en la sintaxis del lenguaje nativo y el tipo de sistema.

Posted: 3/3/2008 22:54 por Edison Daniel García | con 3 comment(s)
Archivado en:
Comparte este post:

Comentarios

Eduardo Quintás ha opinado:

Cuando dices "Linq es una metodología ..."

No querrás decir LinQ es una TECNOLOGÍA?

# March 4, 2008 8:56 AM

darkman ha opinado:

LinQ no es una metodología, ni un modelo de programación, es un lenguaje de consulta sobre colecciones, o si lo prefieres un api para hacer consultas sobre colecciones, nada más.

# March 4, 2008 9:35 AM

Edison Daniel García ha opinado:

Si fue un fallo ahi no es metodologia es una tecnología, muchas gracias por sus comentarios.

# March 4, 2008 3:52 PM