Visual Basic .NET Language
LINQ
Suche…
Einführung
LINQ (Language Integrated Query) ist ein Ausdruck, der Daten aus einer Datenquelle abruft. LINQ vereinfacht diese Situation, indem es ein konsistentes Modell für die Arbeit mit Daten über verschiedene Arten von Datenquellen und -formaten anbietet. In einer LINQ-Abfrage arbeiten Sie immer mit Objekten. Sie verwenden dieselben grundlegenden Codierungsmuster zum Abfragen und Umwandeln von Daten in XML-Dokumenten, SQL-Datenbanken, ADO.NET-Datensätzen, .NET-Sammlungen und allen anderen Formaten, für die ein LINQ-Anbieter verfügbar ist.
Projektion
' 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)
Wir können auch mehrere Ergebnisse gleichzeitig projizieren
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})
Auswahl aus Feld mit einfachen Bedingungen
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"
Die Abfrage ist ein aufzählbares Objekt, das Stack Overflow
und Super User
. x
in der Abfrage ist eine Iterationsvariable, in der jedes von der Where
Klausel überprüfte Objekt gespeichert wird.
Zuordnungsfeld durch Auswahlklausel
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
Das Abfrageergebnis ist ein aufzählbares Objekt, das die Länge der Zeichenfolgen im Eingabearray enthält. In diesem Beispiel wären dies die Werte 14, 10, 10, 24. x in der Abfrage ist eine Iterationsvariable, in der jedes Objekt aus dem Eingabearray gespeichert wird.
Ausgabe bestellen
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"
Die OrderBy-Klausel ordnet die Ausgabe nach dem von der Klausel zurückgegebenen Wert an. In diesem Beispiel ist dies die Länge jeder Zeichenfolge. Die Standardausgabereihenfolge ist aufsteigend. Wenn Sie absteigend benötigen, können Sie nach der Klausel das Descending
Schlüsselwort angeben.
Dim query = From x In sites
Order By x.Length Descending
Wörterbuch aus IEnumerable generieren
' 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
Ermitteln verschiedener Werte (mithilfe der Distinct-Methode)
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"