Revisão e LINQ

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Padrão

PRO e equipe

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

Quando você está depurando o código do LINQ, revisão tem algumas diferenças de comportamento que você deve conhecer.

LINQ to SQL

Em LINQ para consultas SQL, o código de predicado está além do controle do depurador.Portanto, você não pode entrar em código predicado.Qualquer consulta que é compilado em uma árvore de expressão produzirá código que está além do controle do depurador.

Depuração no Visual Basic

Quando estiver percorrendo um programa do Visual Basic e o depurador encontra uma demonstrativo de consulta, ele não step into a demonstrativo, mas destaca a demonstrativo inteira sistema autônomo uma única demonstrativo.Esse comportamento ocorre porque a consulta não é avaliada até que ele é chamado.Para obter mais informações, consulte Introdução ao LINQ no Visual Basic.

Se você percorrer o código de exemplo a seguir, o depurador realça a demonstrativo de consulta ou criação de consulta, sistema autônomo uma única demonstrativo.

Function MyFunction(ByVal x As Char)
    Return True
End Function

Sub Main()
    'Query creation
    Dim x = From it In "faoaoeua" _
            Where MyFunction(it) _
            Select New With {.a = it}

    ' Query execution
    For Each cur In x
        Console.WriteLine(cur.ToString())
    Next
End Sub

Quando você entrar novamente, o depurador realça For Each cur In x. Na próxima etapa, etapas para a função MyFunction. Após percorrendo MyFunction, ele salta para voltar Console.WriteLine(cur.ToSting()). Em nenhum momento ele depurar o predicado código na declaração da consulta, embora o depurador é avaliada esse código.

Substituindo um predicado com uma função para ativar o nível (Visual Basic)

Se você tiver para depurar código predicado para fins de depuração, você pode substituir o predicado por uma telefonar para uma função que contém o código de predicado original.Por exemplo, suponha que você tenha este código:

Dim items() as integer ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

' Get the even numbers
Dim query = From nextInt in items Where nextInt Mod 2 = 0 Select nextInt

For each item in query
      Console.WriteLine(item)
Next

Você pode mover o código de predicado para uma nova função chamada IsEven:

Dim items Dim items () as integer ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

' Get the even numbers
Dim query = From nextInt in items Where IsEven(nextInt) Select nextInt

For each item in query
      Console.WriteLine(item)
Next
... 
Function IsEven(item As =Integer) as Boolean
      Return item Mod 2 = 0
End Function

A consulta revisada chama a função IsEven cada vez que passa através de items. Você pode usar o depurador de janelas de ver se cada item atende a condição especificada, e você pode depurar o código em IsEven. O predicado neste exemplo é bem simples.No entanto, se você tiver um predicado mais difícil que você precisa depurar, essa técnica pode ser muito útil.

Consulte também

Conceitos

edição e continuar com LINQ

Introdução às consultas do LINQ

Introdução ao LINQ no Visual Basic

Outros recursos

Depuração de LINQ