다음을 통해 공유


Visual Basic의 LINQ 소개

LINQ(Language-Integrated Query)는 Visual Basic에 쿼리 기능을 추가하고 모든 종류의 데이터를 사용할 때 간단하고 강력한 기능을 제공합니다. LINQ는 처리할 데이터베이스에 쿼리를 보내거나 검색하는 각 데이터 형식에 대해 서로 다른 쿼리 구문을 사용하는 대신 Visual Basic 언어의 일부로 쿼리를 도입합니다. 데이터 형식에 관계없이 통합 구문을 사용합니다.

LINQ를 사용하면 SQL Server 데이터베이스, XML, 메모리 내 배열 및 컬렉션, ADO.NET 데이터 세트 또는 LINQ를 지원하는 다른 원격 또는 로컬 데이터 원본의 데이터를 쿼리할 수 있습니다. 일반적인 Visual Basic 언어 요소를 사용하여 이 모든 작업을 수행할 수 있습니다. 쿼리는 Visual Basic 언어로 작성되므로 쿼리 결과가 강력한 형식의 개체로 반환됩니다. 이러한 개체는 IntelliSense를 지원하므로 런타임 대신 컴파일 시간에 코드를 더 빠르게 작성하고 쿼리에서 오류를 catch할 수 있습니다. LINQ 쿼리를 추가 쿼리의 원본으로 사용하여 결과를 구체화할 수 있습니다. 사용자가 쿼리 결과를 쉽게 보고 수정할 수 있도록 컨트롤에 바인딩할 수도 있습니다.

예를 들어 다음 코드 예제에서는 컬렉션에서 고객 목록을 반환하고 해당 위치에 따라 그룹화하는 LINQ 쿼리를 보여 있습니다.

' Obtain a list of customers.
Dim customers As List(Of Customer) = GetCustomers()

' Return customers that are grouped based on country.
Dim countries = From cust In customers
                Order By cust.Country, cust.City
                Group By CountryName = cust.Country
                Into CustomersInCountry = Group, Count()
                Order By CountryName

' Output the results.
For Each country In countries
    Debug.WriteLine(country.CountryName & " count=" & country.Count)

    For Each customer In country.CustomersInCountry
        Debug.WriteLine("   " & customer.CompanyName & "  " & customer.City)
    Next
Next

' Output:
'   Canada count=2
'      Contoso, Ltd  Halifax
'      Fabrikam, Inc.  Vancouver
'   United States count=1
'      Margie's Travel  Redmond

예제 실행

소개 및 LINQ 쿼리 구조 섹션에서 예제를 실행하려면 고객 및 주문 목록을 반환하는 다음 코드를 포함합니다.

' Return a list of customers.
Private Function GetCustomers() As List(Of Customer)
    Return New List(Of Customer) From
        {
            New Customer With {.CustomerID = 1, .CompanyName = "Contoso, Ltd", .City = "Halifax", .Country = "Canada"},
            New Customer With {.CustomerID = 2, .CompanyName = "Margie's Travel", .City = "Redmond", .Country = "United States"},
            New Customer With {.CustomerID = 3, .CompanyName = "Fabrikam, Inc.", .City = "Vancouver", .Country = "Canada"}
        }
End Function

' Return a list of orders.
Private Function GetOrders() As List(Of Order)
    Return New List(Of Order) From
        {
            New Order With {.CustomerID = 1, .Amount = "200.00"},
            New Order With {.CustomerID = 3, .Amount = "600.00"},
            New Order With {.CustomerID = 1, .Amount = "300.00"},
            New Order With {.CustomerID = 2, .Amount = "100.00"},
            New Order With {.CustomerID = 3, .Amount = "800.00"}
        }
End Function

' Customer Class.
Private Class Customer
    Public Property CustomerID As Integer
    Public Property CompanyName As String
    Public Property City As String
    Public Property Country As String
End Class

' Order Class.
Private Class Order
    Public Property CustomerID As Integer
    Public Property Amount As Decimal
End Class

LINQ 공급자

LINQ 공급자는 Visual Basic LINQ 쿼리를 쿼리 중인 데이터 원본에 매핑합니다. LINQ 쿼리를 작성할 때 공급자는 해당 쿼리를 가져와서 데이터 원본이 실행할 수 있는 명령으로 변환합니다. 또한 공급자는 원본에서 쿼리 결과를 구성하는 개체로 데이터를 변환합니다. 마지막으로 데이터 원본에 업데이트를 보낼 때 개체를 데이터로 변환합니다.

Visual Basic에는 다음 LINQ 공급자가 포함됩니다.

공급자 설명
LINQ to Objects (객체에 대한 LINQ) LINQ to Objects 공급자를 사용하면 메모리 내 컬렉션 및 배열을 쿼리할 수 있습니다. 개체가 IEnumerable 또는 IEnumerable<T> 인터페이스 중 하나를 지원하는 경우 LINQ to Objects를 사용하여 쿼리할 수 있습니다.

모든 Visual Basic 프로젝트에 대해 기본적으로 가져오는 네임스페이스를 가져와 System.Linq LINQ to Objects 공급자를 사용하도록 설정할 수 있습니다.

LINQ to Objects 공급자에 대한 자세한 내용은 LINQ to Objects를 참조하세요.
LINQ to SQL LINQ to SQL 공급자를 사용하면 SQL Server 데이터베이스에서 데이터를 쿼리하고 수정할 수 있습니다. 이렇게 하면 애플리케이션의 개체 모델을 데이터베이스의 테이블 및 개체에 쉽게 매핑할 수 있습니다.

Visual Basic을 사용하면 O/R 디자이너(개체 관계형 디자이너)를 포함하여 LINQ to SQL로 더 쉽게 작업할 수 있습니다. 이 디자이너는 데이터베이스의 개체에 매핑되는 애플리케이션에서 개체 모델을 만드는 데 사용됩니다. 또한 O/R 디자이너는 데이터베이스와의 통신을 관리하고 낙관적 동시성 검사를 위해 상태를 저장하는 개체에 저장 프로시저 및 함수 DataContext 를 매핑하는 기능을 제공합니다.

LINQ to SQL 공급자에 대한 자세한 내용은 LINQ to SQL을 참조하세요. 개체 관계형 디자이너에 대한 자세한 내용은 Visual Studio의 LINQ to SQL 도구를 참조하세요.
LINQ to XML LINQ to XML 공급자를 사용하면 XML을 쿼리하고 수정할 수 있습니다. 메모리 내 XML을 수정하거나 XML을 로드하고 XML을 파일에 저장할 수 있습니다.

또한 LINQ to XML 공급자를 사용하면 VISUAL Basic 코드에서 직접 XML을 작성할 수 있는 XML 리터럴 및 XML 축 속성을 사용할 수 있습니다. 자세한 내용은 XML을 참조하세요.
LINQ to DataSet (LINQ를 사용하여 DataSet과 연결) LINQ to DataSet 공급자를 사용하면 ADO.NET 데이터 세트의 데이터를 쿼리하고 업데이트할 수 있습니다. 데이터 세트의 데이터를 쿼리, 집계 및 업데이트하는 기능을 간소화하고 확장하기 위해 데이터 세트를 사용하는 애플리케이션에 LINQ의 기능을 추가할 수 있습니다.

자세한 내용은 LINQ to DataSet을 참조하세요.

LINQ 쿼리의 구조

쿼리 식이라고도 하는 LINQ 쿼리는 쿼리의 데이터 원본 및 반복 변수를 식별하는 쿼리 절의 조합으로 구성됩니다. 쿼리 식에는 정렬, 필터링, 그룹화 및 조인에 대한 지침이나 원본 데이터에 적용할 계산이 포함될 수도 있습니다. 쿼리 식 구문은 SQL 구문과 유사합니다. 따라서 많은 구문이 익숙할 수 있습니다.

쿼리 식은 From 절로 시작됩니다. 이 절은 쿼리의 원본 데이터와 원본 데이터의 각 요소를 개별적으로 참조하는 데 사용되는 변수를 식별합니다. 이러한 변수는 명명된 범위 변수 또는 반복 변수입니다. 쿼리에는 From 절이 필요하며, Aggregate 쿼리의 경우는 From 절이 선택 사항입니다. 쿼리의 범위와 원본이 From 또는 Aggregate 절에서 식별되면, 쿼리를 구체화하기 위해 다양한 쿼리 절을 조합하여 포함할 수 있습니다. 쿼리 절에 대한 자세한 내용은 이 항목의 뒷부분에 있는 Visual Basic LINQ 쿼리 연산자를 참조하세요. 예를 들어 다음 쿼리는 고객 데이터의 원본 컬렉션을 변수로 customers 식별하고 반복 변수를 식별 cust합니다.

Dim customers = GetCustomers()

Dim queryResults = From cust In customers

For Each result In queryResults
    Debug.WriteLine(result.CompanyName & "  " & result.Country)
Next

' Output:
'   Contoso, Ltd  Canada
'   Margie's Travel  United States
'   Fabrikam, Inc.  Canada

이 예제는 그 자체로 유효한 쿼리입니다. 그러나 결과를 구체화하기 위해 쿼리 절을 더 추가하면 쿼리가 훨씬 더 강력해집니다. 예를 들어 하나 이상의 값으로 Where 결과를 필터링하는 절을 추가할 수 있습니다. 쿼리 식은 한 줄의 코드입니다. 쿼리의 끝에 추가 쿼리 절을 추가할 수 있습니다. 여러 줄의 텍스트에서 쿼리를 분리하여 밑줄(_) 줄 연속 문자를 사용하여 가독성을 향상시킬 수 있습니다. 다음 코드 예제는 Where 절을 포함하는 쿼리의 예를 보여 줍니다.

Dim queryResults = From cust In customers
                   Where cust.Country = "Canada"

또 다른 강력한 쿼리 절은 Select 데이터 원본에서 선택한 필드만 반환할 수 있는 절입니다. LINQ 쿼리는 강하게 형식화된 객체의 열거 가능한 컬렉션을 반환합니다. 쿼리는 익명 형식 또는 명명된 형식의 컬렉션을 반환할 수 있습니다. 절을 Select 사용하여 데이터 원본에서 단일 필드만 반환할 수 있습니다. 이렇게 하면 반환되는 컬렉션의 형식은 해당 단일 필드의 형식입니다. 절을 Select 사용하여 데이터 원본에서 여러 필드를 반환할 수도 있습니다. 이렇게 하면 반환되는 컬렉션의 형식이 새 익명 형식입니다. 쿼리에서 반환된 필드를 지정된 명명된 형식의 필드와 일치시킬 수도 있습니다. 다음 코드 예제에서는 멤버가 데이터 원본에서 선택한 필드의 데이터로 채워진 익명 형식의 컬렉션을 반환하는 쿼리 식을 보여 집니다.

Dim queryResults = From cust In customers
               Where cust.Country = "Canada"
               Select cust.CompanyName, cust.Country

LINQ 쿼리를 사용하여 여러 데이터 원본을 결합하고 단일 결과를 반환할 수도 있습니다. 이 작업은 하나 이상의 From 절을 사용하거나 Join 또는 Group Join 쿼리 절을 사용하여 수행할 수 있습니다. 다음 코드 예제에서는 고객과 주문 데이터를 결합하고 고객 및 주문 데이터를 포함하는 익명 형식의 컬렉션을 반환하는 쿼리 식을 보여 줍니다.

Dim customers = GetCustomers()
Dim orders = GetOrders()

Dim queryResults = From cust In customers, ord In orders
           Where cust.CustomerID = ord.CustomerID
           Select cust, ord

For Each result In queryResults
    Debug.WriteLine(result.ord.Amount & "  " & result.ord.CustomerID & "  " & result.cust.CompanyName)
Next

' Output:
'   200.00  1  Contoso, Ltd
'   300.00  1  Contoso, Ltd
'   100.00  2  Margie's Travel
'   600.00  3  Fabrikam, Inc.
'   800.00  3  Fabrikam, Inc.

절을 Group Join 사용하여 고객 개체 컬렉션을 포함하는 계층적 쿼리 결과를 만들 수 있습니다. 각 고객 개체에는 해당 고객에 대한 모든 주문 컬렉션이 포함된 속성이 있습니다. 다음 코드 예제에서는 고객과 주문 데이터를 계층적 결과로 결합하고 익명 형식의 컬렉션을 반환하는 쿼리 식을 보여 줍니다. 쿼리는 고객의 주문 데이터 컬렉션을 포함하는 속성을 포함하는 CustomerOrders 형식을 반환합니다. 또한 해당 고객의 모든 주문 합계를 포함하는 속성 OrderTotal도 포함됩니다. (이 쿼리는 LEFT OUTER JOIN과 동일합니다.)

Dim customers = GetCustomers()
Dim orders = GetOrders()

Dim queryResults = From cust In customers
                   Group Join ord In orders On
                     cust.CustomerID Equals ord.CustomerID
                     Into CustomerOrders = Group,
                          OrderTotal = Sum(ord.Amount)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, OrderTotal

For Each result In queryResults
    Debug.WriteLine(result.OrderTotal & "  " & result.CustomerID & "  " & result.CompanyName)
    For Each ordResult In result.CustomerOrders
        Debug.WriteLine("   " & ordResult.Amount)
    Next
Next

' Output:
'   500.00  1  Contoso, Ltd
'      200.00
'      300.00
'   100.00  2  Margie's Travel
'      100.00
'   1400.00  3  Fabrikam, Inc.
'      600.00
'      800.00

강력한 쿼리 식을 만드는 데 사용할 수 있는 몇 가지 추가 LINQ 쿼리 연산자가 있습니다. 이 항목의 다음 섹션에서는 쿼리 식에 포함할 수 있는 다양한 쿼리 절에 대해 설명합니다. Visual Basic 쿼리 절에 대한 자세한 내용은 쿼리를 참조하세요.

Visual Basic LINQ 쿼리 연산자

네임스페이스의 System.Linq 클래스와 LINQ 쿼리를 지원하는 다른 네임스페이스에는 애플리케이션의 요구에 따라 쿼리를 만들고 구체화하기 위해 호출할 수 있는 메서드가 포함됩니다. Visual Basic에는 다음과 같은 일반적인 쿼리 절에 대한 키워드가 포함되어 있습니다. Visual Basic 쿼리 절에 대한 자세한 내용은 쿼리를 참조하세요.

From 절

쿼리를 From 시작하려면 절 또는 Aggregate 절이 필요합니다. 절은 From 쿼리에 대한 원본 컬렉션 및 반복 변수를 지정합니다. 다음은 그 예입니다.

' Returns the company name for all customers for which
' the Country is equal to "Canada".
Dim names = From cust In customers
            Where cust.Country = "Canada"
            Select cust.CompanyName

Select 절

선택 사항입니다. Select은 쿼리에 대한 반복 변수 집합을 선언합니다. 다음은 그 예입니다.

' Returns the company name and ID value for each
' customer as a collection of a new anonymous type.
Dim customerList = From cust In customers
                   Select cust.CompanyName, cust.CustomerID

Select 절을 지정하지 않으면, 쿼리의 반복 변수는 From 절이나 Aggregate 절에 지정된 반복 변수로 구성됩니다.

Where 조건절

선택 사항입니다. Where은 쿼리에 대한 필터링 조건을 지정합니다. 다음은 그 예입니다.

' Returns all product names for which the Category of
' the product is "Beverages".
Dim names = From product In products
            Where product.Category = "Beverages"
            Select product.Name

Order By 절

선택 사항입니다. 절은 Order By 쿼리의 열에 대한 정렬 순서를 지정합니다. 다음은 그 예입니다.

' Returns a list of books sorted by price in 
' ascending order.
Dim titlesAscendingPrice = From b In books
                           Order By b.price

Join 절

선택 사항입니다. Join은 두 컬렉션을 단일 컬렉션으로 결합합니다. 다음은 그 예입니다.

' Returns a combined collection of all of the 
' processes currently running and a descriptive
' name for the process taken from a list of 
' descriptive names.
Dim processes = From proc In Process.GetProcesses
                Join desc In processDescriptions
                  On proc.ProcessName Equals desc.ProcessName
                Select proc.ProcessName, proc.Id, desc.Description

Group By 절

선택 사항입니다. 절은 Group By 쿼리 결과의 요소를 그룹화합니다. 각 그룹에 집계 함수를 적용하는 데 사용할 수 있습니다. 다음은 그 예입니다.

' Returns a list of orders grouped by the order date
' and sorted in ascending order by the order date.
Dim orderList = From order In orders
                Order By order.OrderDate
                Group By OrderDate = order.OrderDate
                Into OrdersByDate = Group

그룹 조인 절

선택 사항입니다. Group Join은 두 컬렉션을 단일 계층적 컬렉션으로 결합합니다. 다음은 그 예입니다.

' Returns a combined collection of customers and
' customer orders.
Dim customerList = From cust In customers
                   Group Join ord In orders On
                     cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        TotalOfOrders = Sum(ord.Amount)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, TotalOfOrders

집계 조항

쿼리를 AggregateFrom 시작하려면 절 또는 절이 필요합니다. 문장은 Aggregate 컬렉션에 하나 이상의 집계 함수를 적용합니다. 예를 들어 다음 예제와 같이 절을 Aggregate 사용하여 쿼리에서 반환된 모든 요소에 대한 합계를 계산할 수 있습니다.

' Returns the sum of all order amounts.
Dim orderTotal = Aggregate order In orders
                 Into Sum(order.Amount)

절을 Aggregate 사용하여 쿼리를 수정할 수도 있습니다. 예를 들어 절을 Aggregate 사용하여 관련 쿼리 컬렉션에 대한 계산을 수행할 수 있습니다. 다음은 그 예입니다.

' Returns the customer company name and largest 
' order amount for each customer.
Dim customerMax = From cust In customers
                  Aggregate order In cust.Orders
                  Into MaxOrder = Max(order.Amount)
                  Select cust.CompanyName, MaxOrder

Let 절

선택 사항입니다. Let은 값을 계산하고 쿼리의 새 변수에 할당합니다. 다음은 그 예입니다.

' Returns a list of products with a calculation of
' a ten percent discount.
Dim discountedProducts = From prod In products
                         Let Discount = prod.UnitPrice * 0.1
                         Where Discount >= 50
                         Select prod.Name, prod.UnitPrice, Discount

명확한 절

선택 사항입니다. Distinct 절은 쿼리 결과에서 중복 값을 제거하기 위해 현재 반복 변수의 값을 제한합니다. 다음은 그 예입니다.

' Returns a list of cities with no duplicate entries.
Dim cities = From item In customers
             Select item.City
             Distinct

건너뛰기 절

선택 사항입니다. Skip은 컬렉션에서 지정된 개수의 요소를 바이패스한 다음 나머지 요소를 반환합니다. 다음은 그 예입니다.

' Returns a list of customers. The first 10 customers
' are ignored and the remaining customers are
' returned.
Dim customerList = From cust In customers
                   Skip 10

Skip While 구문

선택 사항입니다. Skip While은 지정된 조건이 true 있는 한 컬렉션의 요소를 바이패스한 다음 나머지 요소를 반환합니다. 다음은 그 예입니다.

' Returns a list of customers. The query ignores all
' customers until the first customer for whom
' IsSubscriber returns false. That customer and all
' remaining customers are returned.
Dim customerList = From cust In customers
                   Skip While IsSubscriber(cust)

테이크 조항

선택 사항입니다. ATake은 컬렉션의 시작 부분부터 지정된 수의 연속 요소를 반환합니다. 다음은 그 예입니다.

' Returns the first 10 customers.
Dim customerList = From cust In customers
                   Take 10

Take While 절

선택 사항입니다. Take While은 지정된 조건이 true 있는 한 컬렉션에 요소를 포함하고 나머지 요소를 무시합니다. 다음은 그 예입니다.

' Returns a list of customers. The query returns
' customers until the first customer for whom 
' HasOrders returns false. That customer and all 
' remaining customers are ignored.
Dim customersWithOrders = From cust In customers
                          Order By cust.Orders.Count Descending
                          Take While HasOrders(cust)

추가 LINQ 쿼리 기능 사용

LINQ에서 제공하는 열거 가능 및 쿼리 가능 형식의 멤버를 호출하여 추가 LINQ 쿼리 기능을 사용할 수 있습니다. 쿼리 식의 결과에 대해 특정 쿼리 연산자를 호출하여 이러한 추가 기능을 사용할 수 있습니다. 예를 들어 다음 예제에서는 메서드를 Enumerable.Union 사용하여 두 쿼리의 결과를 하나의 쿼리 결과로 결합합니다. 메서드를 Enumerable.ToList 사용하여 쿼리 결과를 제네릭 목록으로 반환합니다.

Public Function GetAllCustomers() As List(Of Customer)
    Dim customers1 = From cust In domesticCustomers
    Dim customers2 = From cust In internationalCustomers

    Dim customerList = customers1.Union(customers2)

    Return customerList.ToList()
End Function

추가 LINQ 기능에 대한 자세한 내용은 표준 쿼리 연산자 개요를 참조하세요.

LINQ to SQL을 사용하여 데이터베이스에 연결

Visual Basic에서는 LINQ to SQL 파일을 사용하여 액세스하려는 테이블, 뷰 및 저장 프로시저와 같은 SQL Server 데이터베이스 개체를 식별합니다. LINQ to SQL 파일의 확장명은 .dbml입니다.

SQL Server 데이터베이스에 대한 유효한 연결이 있는 경우 LINQ to SQL 클래스 항목 템플릿을 프로젝트에 추가할 수 있습니다. 개체 관계형 디자이너(O/R 디자이너)가 표시됩니다. O/R 디자이너를 사용하면 서버 탐색기/에서 디자이너 화면으로 코드에 액세스하려는 항목을 끌 수 있습니다. LINQ to SQL 파일은 프로젝트에 개체를 DataContext 추가합니다. 이 개체에는 액세스하려는 테이블 및 뷰에 대한 속성 및 컬렉션과 호출하려는 저장 프로시저에 대한 메서드가 포함됩니다. LINQ to SQL(.dbml) 파일에 대한 변경 내용을 저장한 후에는 O/R 디자이너에서 정의한 개체를 참조하여 DataContext 코드에서 이러한 개체에 액세스할 수 있습니다. DataContext 프로젝트의 개체 이름은 LINQ to SQL 파일의 이름을 기반으로 합니다. 예를 들어 Northwind.dbml이라는 LINQ to SQL 파일은 DataContext로 명명된 NorthwindDataContext 개체를 만듭니다.

단계별 지침이 포함된 예제는 방법: 데이터베이스 쿼리방법: 저장 프로시저 호출을 참조하세요.

LINQ를 지원하는 Visual Basic 기능

Visual Basic에는 LINQ를 간단하게 사용하고 LINQ 쿼리를 수행하기 위해 작성해야 하는 코드의 양을 줄이는 다른 주목할 만한 기능이 포함되어 있습니다. 여기에는 다음이 포함되었습니다.

  • 익명 형식을 사용하면 쿼리 결과에 따라 새 형식을 만들 수 있습니다.

  • 암시적으로 형식화된 변수를 사용하면 형식 지정을 연기하고 컴파일러가 쿼리 결과에 따라 형식을 유추할 수 있습니다.

  • 확장 메서드를 사용하면 형식 자체를 수정하지 않고도 고유한 메서드로 기존 형식을 확장할 수 있습니다.

자세한 내용은 LINQ를 지원하는 Visual Basic 기능을 참조하세요.

지연 및 즉각적인 쿼리 실행

쿼리 실행은 쿼리 만들기와는 별개입니다. 쿼리를 만든 후에는 별도의 메커니즘에 의해 실행이 트리거됩니다. 쿼리가 정의되는 즉시(즉시 실행) 쿼리를 실행하거나 정의를 저장할 수 있으며 나중에 쿼리를 실행할 수 있습니다(지연된 실행).

기본적으로 쿼리를 만들 때 쿼리 자체는 즉시 실행되지 않습니다. 대신 쿼리 정의는 쿼리 결과를 참조하는 데 사용되는 변수에 저장됩니다. 루프와 같이 나중에 코드에서 쿼리 결과 변수에 For…Next 액세스하면 쿼리가 실행됩니다. 이 프로세스를 지연된 실행이라고 합니다.

쿼리가 정의될 때 즉시 실행이라고도 하는 쿼리를 실행할 수도 있습니다. 쿼리 결과의 개별 요소에 액세스해야 하는 메서드를 적용하여 즉시 실행을 트리거할 수 있습니다. 집계 함수(예: Count, Sum, AverageMin또는 Max.)를 포함하는 결과일 수 있습니다. 집계 함수에 대한 자세한 내용은 Aggregate 절을 참조하세요.

ToList 또는 ToArray 메서드를 사용하면 즉시 실행을 강제할 수 있습니다. 쿼리를 즉시 실행하고 결과를 캐시하려는 경우에 유용할 수 있습니다. 이러한 메서드에 대한 자세한 내용은 데이터 형식 변환을 참조하세요.

쿼리 실행에 대한 자세한 내용은 첫 번째 LINQ 쿼리 작성을 참조하세요.

Visual Basic의 XML

Visual Basic의 XML 기능에는 코드에서 XML을 쉽게 만들고, 액세스하고, 쿼리하고, 수정할 수 있는 XML 리터럴 및 XML 축 속성이 포함됩니다. XML 리터럴을 사용하면 코드에서 직접 XML을 작성할 수 있습니다. Visual Basic 컴파일러는 XML을 일류 데이터 개체로 처리합니다.

다음 코드 예제에서는 XML 요소를 만들고, 하위 요소 및 특성에 액세스하고, LINQ를 사용하여 요소의 내용을 쿼리하는 방법을 보여 줍니다.

' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

        Dim contact =
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

자세한 내용은 XML을 참조하세요.

주제 설명
XML 쿼리할 수 있고 Visual Basic 코드에 XML을 일류 데이터 개체로 포함할 수 있는 Visual Basic의 XML 기능에 대해 설명합니다.
쿼리 Visual Basic에서 사용할 수 있는 쿼리 절에 대한 참조 정보를 제공합니다.
LINQ(Language-Integrated Query) LINQ에 대한 일반 정보, 프로그래밍 지침 및 샘플을 포함합니다.
LINQ to SQL LINQ to SQL에 대한 일반 정보, 프로그래밍 지침 및 샘플을 포함합니다.
LINQ to Objects LINQ to Objects에 대한 일반 정보, 프로그래밍 지침 및 샘플을 포함합니다.
LINQ to ADO.NET (포털 페이지) LINQ에서 ADO.NET 위한 일반 정보, 프로그래밍 지침 및 샘플에 대한 링크를 포함합니다.
LINQ to XML LINQ to XML에 대한 일반 정보, 프로그래밍 지침 및 샘플을 포함합니다.

사용 방법 및 단계별 설명 주제

방법: 데이터베이스 쿼리

방법: 저장 프로시저 호출

방법: 데이터베이스에서 데이터 수정

데이터 조인 방법

방법: 쿼리 결과 정렬

방법: 쿼리 결과 필터링

방법: 개수, 합계 또는 평균 데이터

방법: 쿼리 결과에서 최소값 또는 최대값 찾기

방법: 저장 프로시저를 할당하여 업데이트, 삽입 및 삭제(O/R 디자이너)

17장:Visual Basic 2008 프로그래밍의 LINQ

참고하십시오