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"


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow