Docs Menu
Docs Home
/ /

Analizar expresiones LINQ

LINQ es una sintaxis de consulta incluida en el lenguaje C#. El controlador .NET/C# puede traducir un subconjunto de expresiones LINQ en canales de agregación de MongoDB.

Para obtener más información sobre LINQ, consulte los siguientes recursos:

  • LINQ en la documentación del controlador .NET/C#

  • LINQ en la guía de Microsoft C#

Para obtener más información sobre las canalizaciones de agregación, consulte Agregación en el manual de MongoDB.

Nota

Diferencias de tiempo de ejecución

Aunque las traducciones de la API de consultas de MongoDB generadas por el analizador de C# tienen la misma forma de consulta que las consultas de su controlador .NET/C# en tiempo de ejecución, puede haber ligeras diferencias debido a los siguientes factores:

  • Su configuración de serialización

  • Su configuración de LINQ

La diferencia entre las traducciones que genera el analizador de C# y sus consultas en tiempo de ejecución no debería afectar su capacidad para analizar y depurar su código.

Para obtener más información sobre la serialización y la configuración de LINQ, consulte la Página de preguntas frecuentes.

Utilice el analizador de C# para obtener información sobre sus expresiones LINQ:

  • Cómo se traducen sus expresiones LINQ a la API de consulta de MongoDB

  • Si alguna de sus expresiones LINQ no es compatible

Haga clic en las siguientes pestañas para ver un ejemplo de una expresión LINQ y su traducción correspondiente de MongoDB Query API:

var books = queryableCollection
.Where(b =>
b.Genre == genre &&
b.Price >= minPrice &&
b.Title.Contains(titleSearchTerm))
.OrderBy(b => b.Price)
.ToList();
[{ "$match" : {
"Genre" : genre,
"Price" : { "$gte" : minPrice },
"Title" : /titleSearchTerm/s }
},
{ "$sort" : { "Price" : 1 } }]

Nota

Nombres de variables

Las traducciones de la API de consultas de MongoDB generadas por el Analizador de C# contienen nombres de variables del código del controlador .NET/C#. El controlador .NET/C# reemplaza estos nombres de variables con sus valores correspondientes cuando la aplicación se comunica con MongoDB.

Para analizar sus expresiones LINQ en Visual Studio, realice las siguientes acciones:

  1. Instale C# Analyzer como se describe en la guía de instalación.

  2. Escriba una expresión LINQ con el controlador .NET/C#.

  3. Mueva el ratón sobre el ... anotación debajo del primer método de su expresión LINQ para mostrar un mensaje de información que contiene la traducción de la API de consulta de MongoDB.

El analizador de C# analiza expresiones LINQ en los siguientes tipos de sintaxis:

  • Sintaxis del método

  • Sintaxis de consulta

Haga clic en la siguiente pestaña correspondiente para ver una expresión LINQ escrita en sintaxis de método con o sin un mensaje de información mostrado:

Captura de pantalla de una expresión LINQ con una anotación de puntos suspensivos en Visual Studio.
Captura de pantalla de una expresión LINQ con un mensaje de información mostrado en Visual Studio.

Haz clic en la siguiente pestaña correspondiente para ver una expresión LINQ escrita en sintaxis de consulta con o sin un mensaje de información mostrado:

Captura de pantalla de una expresión LINQ con una anotación de puntos suspensivos en Visual Studio.
Captura de pantalla de una expresión LINQ con un mensaje de información mostrado en Visual Studio.

Si su expresión LINQ no es compatible, el analizador de C# genera una MALinq2001 advertencia.

El siguiente fragmento de código contiene la expresión LINQ GetHashCode no compatible:

var result = queryableColl.Where(b => b.GetHashCode() == 167);

El analizador de C# muestra una anotación en la expresión no compatible y genera el siguiente mensaje de advertencia:

Expression not supported: b.GetHashCode().

La siguiente captura de pantalla muestra el código anotado y la advertencia que se muestra cuando pasa el cursor sobre la anotación:

Captura de pantalla de la advertencia que se muestra en Visual Studio debido a un LINQ no compatible.

Tip

Panel de lista de errores

Si está utilizando Visual Studio para Windows, puede ver la salida del Analizador de C# en la ventana Lista de errores.

Para obtener más información, consulte Ventana de lista de errores de Microsoft.

Para ver más ejemplos de expresiones LINQ no compatibles, consulte el repositorio de Github de MongoDB C# Analyzer.

Para analizar una3 expresión LINQ, debe configurar el Analizador de C# para que use el3 proveedor LINQ. Para saber cómo configurar su proveedor LINQ, consulte la guía de configuración.

Importante

Expresiones admitidas únicamente por LINQ3

Si su versión del controlador .NET/C# admite LINQ3 pero configura su Analizador de C# para usar el proveedor LINQ predeterminado (LINQ2), el Analizador de C# le informa si su expresión LINQ es compatible con LINQ3 pero no con LINQ2.

Haga clic en las pestañas para ver una expresión LINQ compatible con LINQ3 pero no con LINQ2 y la salida de advertencia correspondiente del Analizador de C#:

var result = queryableColl.Where(b => b.Title.Substring(0) == "Pane");
Supported in LINQ3 only: db.coll.Aggregate([{ "$match" : { "$expr" : { "$eq" : [{ "$substrCP" : ["$Title", 0, { "$subtract" : [{ "$strLenCP" : "$Title" }, 0] }] }, "Pane"] } } }])

Para ver ejemplos de expresiones que el controlador .NET/C# solo admite con el3 proveedor LINQ, consulte el repositorio de Github de MongoDB C# Analyzer.

Volver

Expresiones de constructores

En esta página