Visual Basic .NET Language
LINQ
Zoeken…
Invoering
LINQ (Language Integrated Query) is een uitdrukking die gegevens ophaalt uit een gegevensbron. LINQ vereenvoudigt deze situatie door een consistent model aan te bieden voor het werken met gegevens in verschillende soorten gegevensbronnen en -indelingen. In een LINQ-query werkt u altijd met objecten. U gebruikt dezelfde basiscoderingspatronen om gegevens in XML-documenten, SQL-databases, ADO.NET-gegevenssets, .NET-verzamelingen en elk ander formaat waarvoor een LINQ-provider beschikbaar is, op te vragen en te transformeren.
Projectie
' 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)
We kunnen ook meerdere resultaten tegelijk projecteren
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})
Selecteren uit array met eenvoudige voorwaarde
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"
Zoekopdracht is een opsombaar object met Stack Overflow
en Super User
. x
in de query is een itererende variabele waarin elk object wordt opgeslagen dat is gecontroleerd door de Where
clausule.
Mapping array door Select-clausule
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
Het zoekresultaat zal een opsombaar object zijn dat lengten van tekenreeksen in invoerarray bevat. In dit voorbeeld zijn dit de waarden 14, 10, 10, 24. x in de query is itererende variabele waarin elk object uit de invoerarray wordt opgeslagen.
Uitvoer 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"
De clausule OrderBy sorteert de uitvoer op basis van de waarde die uit de clausule wordt geretourneerd. In dit voorbeeld is het de lengte van elke string. Standaard uitvoervolgorde is oplopend. Als u aflopend wilt, kunt u Descending
sleutelwoord na clausule opgeven.
Dim query = From x In sites
Order By x.Length Descending
Woordenboek genereren uit 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
Verschillende waarden verkrijgen (met de 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"