Consultas en LINQ to EntitiesQueries in LINQ to Entities

Una consulta es una expresión que recupera datos de un origen de datos.A query is an expression that retrieves data from a data source. Las consultas se suelen expresar en un lenguaje de consulta especializado, como SQL para bases de datos relacionales y XQuery para XML.Queries are usually expressed in a specialized query language, such as SQL for relational databases and XQuery for 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.Therefore, developers have had to learn a new query language for each type of data source or data format that they query. 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.Language-Integrated Query (LINQ) offers a simpler, consistent model for working with data across various kinds of data sources and formats. En una consulta de LINQ siempre se trabaja con objetos de programación.In a LINQ query, you always work with programming objects.

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.A LINQ query operation consists of three actions: obtain the data source or sources, create the query, and execute the query.

Los orígenes de datos que implementan las interfaces genéricas IEnumerable<T> o IQueryable<T> pueden consultarse a través de LINQ.Data sources that implement the IEnumerable<T> generic interface or the IQueryable<T> generic interface can be queried through LINQ. Las instancias de la clase genérica ObjectQuery<T> (clase), que implementa el modelo genérico IQueryable<T> interfaz, actuar como el origen de datos de LINQ a consultas de entidades.Instances of the generic ObjectQuery<T> class, which implements the generic IQueryable<T> interface, serve as the data source for LINQ to Entities queries. La clase ObjectQuery<T> genérica representa una consulta que devuelve una colección de cero o más objetos con tipo.The ObjectQuery<T> generic class represents a query that returns a collection of zero or more typed objects. También puede hacer que el compilador infiera el tipo de una entidad con la palabra clave de C# var (Dim en Visual Basic).You can also let the compiler infer the type of an entity by using the C# keyword var (Dim in Visual Basic).

En la consulta se especifica exactamente la información que se desea recuperar del origen de datos.In the query, you specify exactly the information that you want to retrieve from the data source. Una consulta también puede especificar cómo se debe ordenar, agrupar y conformar esa información antes de que se devuelva.A query can also specify how that information should be sorted, grouped, and shaped before it is returned. En LINQ, una consulta se almacena en una variable.In LINQ, a query is stored in a variable. Si la consulta devuelve una secuencia de valores, la propia variable de la consulta debe ser de un tipo que se pueda consultar.If the query returns a sequence of values, the query variable itself must be a queryable type. Esta variable de consulta no realiza ninguna acción y no devuelve datos; solamente almacena la información de la consulta.This query variable takes no action and returns no data; it only stores the query information. Tras crear una consulta debe ejecutarla para recuperar los datos.After you create a query you must execute that query to retrieve any data.

Sintaxis de consultaQuery Syntax

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.LINQ to Entities queries can be composed in two different syntaxes: query expression syntax and method-based query syntax. 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.Query expression syntax is new in C# 3.0 and Visual Basic 9.0, and it consists of a set of clauses written in a declarative syntax similar to Transact-SQL or XQuery. Sin embargo, .NET Framework common language runtime (CLR) no puede leer la sintaxis de expresiones de consulta sí.However, the .NET Framework common language runtime (CLR) cannot read the query expression syntax itself. 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.Therefore, at compile time, query expressions are translated to something that the CLR does understand: method calls. Estos métodos se conocen como el operadores de consulta estándar.These methods are known as the standard query operators. Como programador, tiene la opción de llamarlos directamente utilizando la sintaxis de método en lugar de la sintaxis de consulta.As a developer, you have the option of calling them directly by using method syntax, instead of using query syntax. Para obtener más información, vea Query Syntax and Method Syntax in LINQ (Sintaxis de consulta y sintaxis de método en LINQ).For more information, see Query Syntax and Method Syntax in LINQ.

Sintaxis de expresiones de consultaQuery Expression Syntax

Las expresiones de consulta son una sintaxis de consulta declarativa.Query expressions are a declarative query syntax. Esta sintaxis permite a un programador escribir consultas en un lenguaje de alto nivel que tenga un formato similar al de Transact-SQL.This syntax enables a developer to write queries in a high-level language that is formatted similar to 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.By using query expression syntax, you can perform even complex filtering, ordering, and grouping operations on data sources with minimal code. Para obtener más información, operaciones básicas de consulta (Visual Basic).For more information, Basic Query Operations (Visual Basic). Para obtener ejemplos que muestran cómo utilizar la sintaxis de expresiones de consulta, vea los siguientes temas:For examples that demonstrate how to use the query expression syntax, see the following topics:

Sintaxis de consultas basadas en métodosMethod-Based Query Syntax

Otra forma de formular LINQ a consultas de entidades es usar las consultas basadas en métodos.Another way to compose LINQ to Entities queries is by using method-based queries. La sintaxis de consulta basada en métodos es una secuencia de llamadas directas a métodos de operador de LINQ, pasando expresiones lambda como parámetros.The method-based query syntax is a sequence of direct method calls to LINQ operator methods, passing lambda expressions as the parameters. Para obtener más información, vea Expresiones lambda.For more information, see Lambda Expressions. Para obtener ejemplos que muestran cómo utilizar la sintaxis basada en métodos, vea los siguientes temas:For examples that demonstrate how to use method-based syntax, see the following topics:

Vea tambiénSee also