サーチ…


前書き

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を含む列挙可能なオブジェクトになりSuper User 。クエリのxは、 Where句でチェックされた各オブジェクトが格納される変数を反復します。

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 keyword 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