Menu Docs
Página inicial do Docs
/
Analisador do MongoDB C#
/

Analisar expressões LINQ

Nesta página

  • Visão geral
  • Traduzir para a API de query MongoDB
  • Analisar LINQ no Visual Studio
  • Expressões LINQ simples
  • Expressões LINQ não suportadas
  • Analyze LINQ3

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:

  • LINQ na documentação do driver .NET/C#

  • LINQ no guia do Microsoft C#

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

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.

Para analisar suas expressões LINQ no Visual Studio, execute as seguintes ações:

  1. Instale o C# Analyzer conforme descrito no guia de instalação .

  2. Escreva uma expressão LINQ com o driver .NET/C#.

  3. 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.

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:

Captura de tela da expressão LINQ com uma anotação de reticências no Visual Studio.
Captura de tela da expressão LINQ com uma mensagem informativa exibida no Visual Studio.

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:

Captura de tela da expressão LINQ com uma anotação de reticências no Visual Studio.
Captura de tela da expressão LINQ com uma mensagem informativa exibida no Visual Studio.

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:

Captura de tela da anotação abaixo da expressão LINQ não suportada

Confira o aviso gerado pelo C# Analyzer:

Expression not supported: b.GetHashCode().

A seguinte captura de tela mostra o aviso exibido no Visual Studio:

Captura de tela do aviso exibida no Visual Studio de LINQ não compatível.

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.

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 .

Voltar

Expressões dos construtores