Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Analizar expresiones LINQ

LINQ es una sintaxis de query incluida en el lenguaje C#. El controlador .NET/C# puede traducir un subconjunto de expresiones LINQ en pipelines 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 los pipeline de agregación, consulta 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 C# Analyzer tengan la misma forma del query que tus consultas del driver de .NET/C# en tiempo de ejecución, puede haber algunas pequeñas diferencias debido a los siguientes factores:

  • Su configuración de serialización

  • Tus ajustes de LINQ

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

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

Utiliza el Analizador C# para conocer lo siguiente sobre tus expresiones LINQ:

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

  • Si alguna de tus expresiones LINQ no es compatible

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

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 query de MongoDB generadas por el C# Analyzer contienen nombres de variables del código de su driver de .NET/C#. El driver de .NET/C# reemplaza estos nombres de variables por 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 el C# Analyzer como se describe en la guía de Instalación.

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

  3. Mueva su mouse 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 de método

  • Sintaxis de query

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 snippet de código contiene la expresión LINQ no admitida GetHashCode:

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

El C# Analyzer muestra una anotación en la expresión no permitida 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 mostrada en Visual Studio por LINQ no compatible.

Tip

Panel de lista de errores

Si utilizas Visual Studio para Windows, puedes ver la salida del C# Analyzer 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 admitidas, consulta el repositorio Github del Analizador C# de MongoDB.

Para analizar una expresión LINQ3, debes configurar el C# Analyzer para utilizar el proveedor LINQ3. Para aprender cómo configurar tu proveedor LINQ, consulta 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 el proveedor LINQ3, consulta el repositorio de Github MongoDB C# Analyzer.

Volver

Expresiones de desarrolladores

En esta página