Partager via


Guide pratique pour trier ou filtrer des données de texte par n’importe quel mot ou champ (LINQ) (Visual Basic)

L’exemple suivant montre comment trier des lignes de texte structuré, telles que des valeurs séparées par des virgules, par n’importe quel champ de la ligne. Le champ peut être spécifié dynamiquement au moment de l’exécution. Supposons que les champs de scores.csv représentent le numéro d’ID d’un étudiant, suivi d’une série de quatre scores de test.

Pour créer un fichier qui contient des données

Copiez les données scores.csv de la rubrique How to : Join Content from Dissimilar Files (LINQ) (Visual Basic) et enregistrez-les dans votre dossier solution.

Exemple :

Class SortLines

    Shared Sub Main()
        Dim scores As String() = System.IO.File.ReadAllLines("../../../scores.csv")

        ' Change this to any value from 0 to 4
        Dim sortField As Integer = 1

        Console.WriteLine("Sorted highest to lowest by field " & sortField)

        ' Demonstrates how to return query from a method.
        ' The query is executed here.
        For Each str As String In SortQuery(scores, sortField)
            Console.WriteLine(str)
        Next

        ' Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.")
        Console.ReadKey()

    End Sub

    Shared Function SortQuery(
        ByVal source As IEnumerable(Of String),
        ByVal num As Integer) As IEnumerable(Of String)

        Dim scoreQuery = From line In source
                         Let fields = line.Split(New Char() {","})
                         Order By fields(num) Descending
                         Select line

        Return scoreQuery
    End Function
End Class
' Output:
' Sorted highest to lowest by field 1
' 116, 99, 86, 90, 94
' 120, 99, 82, 81, 79
' 111, 97, 92, 81, 60
' 114, 97, 89, 85, 82
' 121, 96, 85, 91, 60
' 122, 94, 92, 91, 91
' 117, 93, 92, 80, 87
' 118, 92, 90, 83, 78
' 113, 88, 94, 65, 91
' 112, 75, 84, 91, 39
' 119, 68, 79, 88, 92
' 115, 35, 72, 91, 70

Cet exemple montre également comment retourner une variable de requête à partir d’une fonction.

Compiler le code

Créez un projet d’application console Visual Basic, avec une Imports instruction pour l’espace de noms System.Linq.

Voir aussi