Recherche…


Introduction

LINQ (Language Integrated Query) est une expression qui extrait des données d'une source de données. LINQ simplifie cette situation en proposant un modèle cohérent pour travailler avec des données sur différents types de sources de données et de formats. Dans une requête LINQ, vous travaillez toujours avec des objets. Vous utilisez les mêmes modèles de codage de base pour interroger et transformer des données dans des documents XML, des bases de données SQL, des ensembles de données ADO.NET, des collections .NET et tout autre format pour lequel un fournisseur LINQ est disponible.

Projection

' 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)

Nous pouvons projeter plusieurs résultats à la fois aussi

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})

Sélection à partir d'un tableau avec une condition simple

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"

Query sera un objet énumérable contenant Stack Overflow et Super User . x dans la requête est une variable itérative où sera stocké chaque objet vérifié par la clause Where .

Tableau de mappage par clause 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

Le résultat de la requête sera un objet énumérable contenant des longueurs de chaînes dans le tableau d'entrée. Dans cet exemple, ce serait les valeurs 14, 10, 10, 24. x dans la requête est une variable itérative où sera stocké chaque objet du tableau d'entrée.

Sortie de commande

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"

La clause OrderBy classe la sortie par la valeur renvoyée par la clause. Dans cet exemple, il s'agit de Longueur de chaque chaîne. L'ordre de sortie par défaut est croissant. Si vous avez besoin de descendre, vous pouvez spécifier une clause après un mot clé Descending .

Dim query = From x In sites
            Order By x.Length Descending

Générer un dictionnaire à partir de 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

Obtenir des valeurs distinctes (en utilisant la méthode 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow