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:
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
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 sus expresiones LINQ en Visual Studio, realice 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 de información que contiene la traducción de la API de consulta de MongoDB.
Expresiones LINQ simples
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:
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 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:

Tip
Panel de lista de errores
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 ú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.



