Практическое руководство. Сортировка или фильтрация текстовых данных по любому слову или полю (LINQ) (Visual Basic)
В следующем примере демонстрируется сортировка строк структурированного текста, таких как значения, разделенные запятыми, по любому полю в строке. Поле можно указывать в среде выполнения динамически. Допустим, поля в файле scores.csv содержат идентификационные номера учащихся и баллы, которые они набрали в результате четырех тестов.
Создание файла с данными
Скопируйте данные scores.csv из раздела How to: Join Content from Dissimilar Files (LINQ) (Visual Basic) и сохраните его в папку решения.
Пример
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
В этом примере также показано, как вернуть переменную запроса из функции.
Компиляция кода
Создайте проект консольного приложения Visual Basic с инструкцией Imports
для пространства имен System.Linq.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по