단계별 실행 및 LINQ

이 항목은 다음 언어에 적용됩니다.

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

항목이 적용됨 항목이 적용됨 항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용됨

Pro, Premium 및 Ultimate

항목이 적용됨 항목이 적용됨 항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용됨

LINQ 코드를 디버깅할 때는 단계별 실행의 동작에 몇 가지 다른 점이 있습니다.

LINQ to SQL

LINQ to SQL 쿼리의 경우 디버거에서 조건자 코드를 제어할 수 없습니다. 따라서 조건자 코드를 한 단계씩 실행할 수 없습니다. 식 트리로 컴파일되는 모든 쿼리는 디버거에서 제어할 수 없는 코드를 생성합니다.

Visual Basic에서 단계별 실행

Visual Basic 프로그램을 단계별로 실행할 때 디버거에서 쿼리 선언이 나오면 선언이 한 단계씩 실행되지 않고 전체 선언이 단일 문으로 강조 표시됩니다. 이는 쿼리가 호출될 때까지 쿼리가 계산되지 않기 때문입니다. 자세한 내용은 Visual Basic의 LINQ 소개를 참조하십시오.

다음 예제 코드를 단계별로 실행하면 디버거에서 쿼리 선언(쿼리 생성)을 단일 문으로 강조 표시합니다.

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

다시 한 단계를 실행하면 디버거에서 For Each cur In x를 강조 표시합니다. 다음 단계에서는 MyFunction 함수를 단계별로 실행합니다. MyFunction을 단계별로 실행한 후에는 Console.WriteLine(cur.ToSting())으로 다시 이동합니다. 쿼리 선언의 조건자 코드는 디버거에서 계산되지만 어떠한 시점에서도 단계별로 실행되지 않습니다.

단계별로 실행할 수 있도록 조건자를 함수로 대체(Visual Basic)

디버깅을 위해 조건자 코드를 단계별로 실행해야 하는 경우 조건자를 원래 조건자 코드가 들어 있는 함수에 대한 호출로 대체할 수 있습니다. 예를 들어 다음과 같은 코드가 있다고 가정합니다.

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

조건자 코드를 IsEven이라는 새 함수로 옮길 수 있습니다.

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

수정된 쿼리에서는 items를 처리할 때마다 IsEven 함수를 호출합니다. 디버거 창을 사용하여 각 항목이 지정된 조건에 맞는지 확인할 수 있고, IsEven의 코드를 단계별로 실행할 수 있습니다. 이 예제의 조건자는 아주 단순합니다. 그러나 복잡한 조건자를 디버깅해야 하는 경우에는 이 방법이 매우 유용할 수 있습니다.

참고 항목

개념

LINQ에서 편집하며 계속하기

LINQ 쿼리 소개(C#)

Visual Basic의 LINQ 소개

기타 리소스

LINQ 디버깅