Overview
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:
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
Traducir a la API de consulta de MongoDB
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.
Analizar LINQ en Visual Studio
Para analizar sus expresiones LINQ en Visual Studio, realice las siguientes acciones:
Instale C# Analyzer como se describe en la guía de instalación.
Escriba una expresión LINQ con el controlador .NET/C#.
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.
Expresiones LINQ simples
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:
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 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:

Tip
Panel de lista de errores
Para ver más ejemplos de expresiones LINQ no compatibles, consulte el repositorio de Github de MongoDB C# Analyzer.
Analyze LINQ3
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.



