Analisar expressões LINQ
Nesta página
Visão geral
LINQ é uma sintaxe de query incluída na linguagem C#. O driver .NET /C# pode converter um subconjunto de expressões LINQ em pipelines de agregação do MongoDB .
Para saber mais sobre LINQ, consulte os seguintes recursos:
Para saber mais sobre pipelines de agregação, consulte Agregação no manual MongoDB.
Observação
Diferenças de tempo de execução
Embora as traduções da API de query do MongoDB geradas pelo C# Analyzer tenham a mesma forma de query que suas queries de driver .NET/C# do tempo de execução, pode haver pequenas diferenças devido aos seguintes fatores:
Suas configurações de serialização
Suas configurações do LINQ
A diferença entre as traduções que o C# Analyzer gera e suas queries no tempo de execução não deve afetar sua capacidade de analisar e depurar seu código.
Para saber mais sobre serialização e configurações do LINQ, consulte a página deperguntas frequentes do .
Use o C# Analyzer para saber o seguinte sobre suas expressões LINQ:
Como suas expressões LINQ se traduzem na MongoDB Query API
Se alguma das suas expressões LINQ não for suportada
Traduzir para a API de query MongoDB
Clique nas abas abaixo para ver um exemplo de uma expressão LINQ e sua tradução correspondente da API MongoDB Query:
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 } }]
Observação
Nomes de variáveis
As traduções da API de query do MongoDB geradas pelo C# Analyzer contêm nomes de variáveis do seu código de driver .NET/C#. O driver .NET/C# substitui os nomes dessas variáveis pelos valores correspondentes quando seu aplicativo se comunica com o MongoDB.
Analisar LINQ no Visual Studio
Para analisar suas expressões LINQ no Visual Studio, execute as seguintes ações:
Instale o C# Analyzer conforme descrito no guia de instalação .
Escreva uma expressão LINQ com o driver .NET/C#.
Passe o mouse sobre a anotação ... abaixo do primeiro método da expressão LINQ para exibir uma mensagem informativa que contém a tradução da MongoDB Query API.
Expressões LINQ simples
O C# Analyzer analisa expressões LINQ nos seguintes tipos de sintaxe:
Sintaxe do método
Sintaxe de consulta
Clique na seguinte guia correspondente para ver uma expressão LINQ escrita na sintaxe do método com ou sem uma mensagem informativa exibida:
Clique na seguinte guia correspondente para ver uma expressão LINQ escrita na sintaxe de query com ou sem uma mensagem de informações exibida:
Expressões LINQ não suportadas
Se sua expressão LINQ não for suportada, o C# Analyzer gerará um aviso NotSupportedLinqExpression
.
Clique nas seguintes abas para ver um trecho de código contendo uma expressão LINQ não suportada e a mensagem de aviso correspondente exibida pelo C# Analyzer:
O seguinte trecho de código contém a expressão LINQ GetHashCode
não suportada:
var result = queryableColl.Where(b => b.GetHashCode() == 167);
A captura de tela a seguir mostra a anotação exibida pelo C# Analyzer abaixo do trecho de código anterior no Visual Studio:
Confira o aviso gerado pelo C# Analyzer:
Expression not supported: b.GetHashCode().
A seguinte captura de tela mostra o aviso exibido no Visual Studio:
Dica
Painel de lista de erros
Se você estiver usando o Visual Studio para Windows, poderá visualizar a saída do {+product+-short} na janela Error List.
Para saber mais, consulte a Janela de lista de erros da Microsoft.
Para visualizar mais exemplos de expressões LINQ sem suporte, consulte o repositório do MongoDB C# Analyzer no Github.
Analyze LINQ3
Para analisar uma expressão LINQ3 , você deve configurar o C# Analyzer para usar o fornecedor LINQ3 . Para saber como configurar seu provedor LINQ, consulte o guia de configuração .
Importante
Expressões suportadas somente por LINQ3
Se a versão do driver .NET/C# oferecer suporte a LINQ3 , mas você configurar o C# Analyzer para usar o provedor LINQ padrão (LINQ2), o C# Analyzer informará se sua expressão LINQ é compatível com LINQ3 , mas não LINQ2.
Clique nas guias para ver uma expressão LINQ suportada por LINQ3 , mas não por LINQ2 , e a saída de aviso correspondente pelo 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 visualizar exemplos de expressões que .NETC# o driver / suporta somente com o3 provedor LINQ, consulte o repositório MongoDB C# Analyzer Github do .