수색…


소개

LINQ (Language Integrated Query)는 데이터 원본에서 데이터를 검색하는 식입니다. LINQ는 다양한 종류의 데이터 원본 및 형식에서의 데이터 작업을위한 일관된 모델을 제공함으로써 이러한 상황을 단순화합니다. LINQ 쿼리에서 항상 개체로 작업합니다. 동일한 기본 코딩 패턴을 사용하여 XML 문서, SQL 데이터베이스, ADO.NET 데이터 집합, .NET 컬렉션 및 LINQ 공급자를 사용할 수있는 다른 형식의 데이터를 쿼리하고 변환합니다.

투사

' sample data
Dim sample = {1, 2, 3, 4, 5}

' using "query syntax"
Dim squares = From number In sample Select number * number

' same thing using "method syntax"
Dim squares = sample.Select (Function (number) number * number)

한 번에 여러 결과를 투영 할 수도 있습니다.

Dim numbersAndSquares =
    From number In sample Select number, square = number * number

Dim numbersAndSquares =
    sample.Select (Function (number) New With {Key number, Key .square = number * number})

간단한 조건의 배열에서 선택하기

Dim sites() As String = {"Stack Overflow", "Super User", "Ask Ubuntu", "Hardware   Recommendations"}
Dim query = From x In sites Where x.StartsWith("S")
' result = "Stack Overflow", "Super User"

쿼리는 Stack OverflowSuper User 포함 된 열거 가능 객체입니다. 쿼리의 xWhere 절에 의해 검사 된 각 개체를 저장할 위치를 반복하는 변수입니다.

Select 절에 의한 배열 매핑

Dim sites() As String = {"Stack Overflow", 
                         "Super User", 
                         "Ask Ubuntu", 
                         "Hardware Recommendations"}
Dim query = From x In sites Select x.Length
' result = 14, 10, 10, 24

질의 결과는 입력 배열의 문자열 길이를 포함하는 열거 가능 객체가 될 것입니다. 이 예제에서는 값 14, 10, 10, 24가 될 것입니다. 쿼리의 x는 입력 배열의 각 객체를 저장할 반복 변수입니다.

주문 출력

Dim sites() As String = {"Stack Overflow", 
                         "Super User", 
                         "Ask Ubuntu", 
                         "Hardware Recommendations"}

Dim query = From x In sites 
            Order By x.Length

' result = "Super User", "Ask Ubuntu", "Stack Overflow", "Hardware Recommendations"

OrderBy 절은 절에서 반환 된 값으로 출력을 정렬합니다. 이 예에서는 각 문자열의 길이입니다. 기본 출력 순서가 오름차순입니다. 내림차순이 필요한 경우 Descending 키워드 after 절을 지정할 수 있습니다.

Dim query = From x In sites
            Order By x.Length Descending

IEnumerable에서 사전 생성하기

' Just setting up the example
Public Class A
    Public Property ID as integer
    Public Property Name as string
    Public Property OtherValue as Object
End Class

Public Sub Example()
    'Setup the list of items
    Dim originalList As New List(Of A)
    originalList.Add(New A() With {.ID = 1, .Name = "Item 1", .OtherValue = "Item 1 Value"})
    originalList.Add(New A() With {.ID = 2, .Name = "Item 2", .OtherValue = "Item 2 Value"})
    originalList.Add(New A() With {.ID = 3, .Name = "Item 3", .OtherValue = "Item 3 Value"})

    'Convert the list to a dictionary based on the ID
    Dim dict As Dictionary(Of Integer, A) = originalList.ToDictionary(function(c) c.ID, function(c) c)

    'Access Values From The Dictionary
    console.Write(dict(1).Name) ' Prints "Item 1"
    console.Write(dict(1).OtherValue) ' Prints "Item 1 Value"
End Sub

별개의 값 가져 오기 (Distinct 메서드 사용)

Dim duplicateFruits = New List(Of String) From {"Grape", "Apple", "Grape", "Apple", "Grape"}
'At this point, duplicateFruits.Length = 5

Dim uniqueFruits = duplicateFruits.Distinct();
'Now, uniqueFruits.Count() = 2
'If iterated over at this point, it will contain 1 each of "Grape" and "Apple"


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow