Overview
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:
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:
Tus ajustes 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 tus expresiones de LINQ en la API de query de MongoDB
Si alguna de tus expresiones LINQ no es compatible
Traduce a la API de query de MongoDB
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.
Analizar LINQ en Visual Studio
Para analizar tus expresiones LINQ en Visual Studio, realiza las siguientes acciones:
Instale el C# Analyzer como se describe en la guía de Instalación.
Escribe una expresión LINQ con el controlador .NET/C#.
Mueva su mouse sobre el ... anotación debajo del primer método de su expresión LINQ para mostrar un mensaje informativo que contenga la traducción de la API de query de MongoDB.
Expresiones LINQ simples
El C# Analyzer analiza expresiones LINQ en los siguientes tipos de sintaxis:
Sintaxis de método
Sintaxis de query
Haga clic en la pestaña correspondiente a continuación para ver una expresión LINQ escrita en sintaxis de método con o sin un mensaje de información muestra:
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:
Expresiones LINQ no admitidas
Si la expresión LINQ no es compatible, el C# Analyzer genera un
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 se pasa el cursor sobre la anotación:

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 aprender más información, consulta 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.
Analyze LINQ3
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 solo por LINQ3
Si la versión de tu driver .NET/C# es compatible con LINQ3, pero configuras tu C# Analyzer para usar el proveedor LINQ por defecto (LINQ2), el C# Analyzer te informa si tu 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 advertencia correspondiente generada por el C# Analyzer:
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.



