Consultas en LINQ to Entities
Una consulta es una expresión que recupera datos de un origen de datos. Las consultas se suelen expresar en un lenguaje de consulta especializado, como SQL para bases de datos relacionales y XQuery para XML. Por lo tanto, los programadores han tenido que aprender un lenguaje de consultas nuevo para cada tipo de origen de datos o formato de datos que consultan. Language-Integrated Query (LINQ) ofrece un modelo coherente y más sencillo para trabajar con los datos de varios formatos y orígenes de datos. En una consulta de LINQ siempre se trabaja con objetos de programación.
Una operación de consulta de LINQ consta de tres acciones: obtener el origen o los orígenes de datos, crear la consulta y ejecutar la consulta.
Los orígenes de datos que implementan las interfaces genéricas IEnumerable<T> o IQueryable<T> pueden consultarse a través de LINQ. Las instancias de la clase genérica ObjectQuery<T>, que implementa la interfaz genérica IQueryable<T>, actúan como origen de datos para las consultas de LINQ to Entities. La clase ObjectQuery<T> genérica representa una consulta que devuelve una colección de cero o más objetos con tipo. También puede hacer que el compilador deduzca el tipo de una entidad utilizando la palabra clave var
de C# (Dim en Visual Basic).
En la consulta se especifica exactamente la información que se desea recuperar del origen de datos. Una consulta también puede especificar cómo se debe ordenar, agrupar y conformar esa información antes de que se devuelva. En LINQ, una consulta se almacena en una variable. Si la consulta devuelve una secuencia de valores, la propia variable de la consulta debe ser de un tipo que se pueda consultar. Esta variable de consulta no realiza ninguna acción y no devuelve datos; solamente almacena la información de la consulta. Tras crear una consulta debe ejecutarla para recuperar los datos.
Sintaxis de las consultas
Las consultas de LINQ to Entities se pueden formular en dos sintaxis diferentes: sintaxis de expresiones de consulta y sintaxis de consultas basadas en métodos. La sintaxis de expresiones de consulta es nueva en C# 3.0 y Visual Basic 9.0, y consta de un conjunto de cláusulas escritas en una sintaxis declarativa similar a Transact-SQL o XQuery. No obstante, Common Language Runtime (CLR) de .NET Framework no puede leer la sintaxis de expresiones de consulta en sí. Por lo tanto, en tiempo de compilación, las expresiones de consulta se traducen a algo que CLR no comprende: las llamadas a métodos. Esos métodos se conocen como operadores de consulta estándar. Como programador, tiene la opción de llamarlos directamente utilizando la sintaxis de método en lugar de la sintaxis de consulta. Para obtener más información, vea Query Syntax and Method Syntax in LINQ (Sintaxis de consulta y sintaxis de método en LINQ).
Sintaxis de expresiones de consulta
Las expresiones de consulta son una sintaxis de consulta declarativa. Esta sintaxis permite a un programador escribir consultas en un lenguaje de alto nivel que tenga un formato similar al de Transact-SQL. Si se utiliza la sintaxis de expresiones de consulta, se pueden realizar incluso operaciones complejas de filtrado, ordenación y agrupamiento en orígenes de datos con código mínimo. Para obtener más información, vea Operaciones de consulta básicas (Visual Basic). Para obtener ejemplos que muestran cómo utilizar la sintaxis de expresiones de consulta, vea los siguientes temas:
Ejemplos de sintaxis de expresiones de consulta: Operadores de agregado
Ejemplos de sintaxis de expresiones de consulta: Particionamiento
Ejemplos de sintaxis de expresiones de consulta: Operadores de combinación
Ejemplos de sintaxis de expresiones de consulta: Operadores de elementos
Ejemplos de sintaxis de expresiones de consulta: Navegar por relaciones
Sintaxis de consultas basadas en métodos
Otra forma de formular consultas de LINQ to Entities es usar las consultas basadas en métodos. La sintaxis de consultas basadas en métodos es una secuencia de llamadas directas a los métodos de operador de LINQ que pasan expresiones lambda como parámetros. Para obtener más información, vea Expresiones lambda. Para obtener ejemplos que muestran cómo utilizar la sintaxis basada en métodos, vea los siguientes temas:
Ejemplos de sintaxis de consulta basada en métodos: Proyección
Ejemplos de sintaxis de consulta basada en métodos: Filtrado
Ejemplos de sintaxis de consulta basada en métodos: Ordenación
Ejemplos de sintaxis de consulta basada en métodos: Operadores de agregación
Ejemplos de sintaxis de consulta basada en métodos: Particionamiento
Ejemplos de sintaxis de consulta basada en métodos: Conversión
Ejemplos de sintaxis de consulta basada en métodos: Operadores de combinación
Ejemplos de sintaxis de consulta basada en métodos: Operadores de elementos
Ejemplos de sintaxis de consulta basada en métodos: Navegar por relaciones