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
Introdução às consultas do LINQ
Introdução ao LINQ no Visual Basic