Visual Basic .NET Language
LINQ
Sök…
Introduktion
LINQ (Language Integrated Query) är ett uttryck som hämtar data från en datakälla. LINQ förenklar denna situation genom att erbjuda en konsekvent modell för att arbeta med data över olika typer av datakällor och format. I en LINQ-fråga arbetar du alltid med objekt. Du använder samma grundläggande kodningsmönster för att fråga och transformera data i XML-dokument, SQL-databaser, ADO.NET-databas, .NET-samlingar och alla andra format som en LINQ-leverantör är tillgänglig för.
Utsprång
' 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)
Vi kan också projicera flera resultat på en gång
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})
Välj från matris med enkelt skick
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"
Frågan kommer att vara ett antal objekt som innehåller Stack Overflow
och Super User
. x
i frågan är iterating variabel där kommer att lagras varje objekt som kontrolleras av Where
clause.
Kartlägga matris med Välj klausul
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
Frågoresultatet kommer att vara ett antal objekt som innehåller längder av strängar i inmatningsfältet. I det här exemplet skulle detta vara värden 14, 10, 10, 24. x i frågan är iterating variabel där varje objekt lagras från inmatningsfältet.
Beställa utgång
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-klausulen beställer utgången med det värde som returneras från klausulen. I det här exemplet är det längden på varje sträng. Standardutgångsordningen är stigande. Om du behöver fallande kan du ange Descending
nyckelord efter klausul.
Dim query = From x In sites
Order By x.Length Descending
Generera ordlista från 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
Få distinkta värden (med hjälp av distinktmetoden)
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"