Visual Basic .NET Language
LINQ
サーチ…
前書き
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 Overflow
とSuper 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