Каждая строка массива представляет текстовый файл в папке. Я хочу, чтобы массив сортировался в зависимости от того, что содержит текстовый файл. Как мне это сделать?Сортировка по строкам в массиве?
0
A
ответ
5
Вы можете передать пользовательские Comparison
к Array.Sort
, так что просто прочитать файл там:
Array.Sort(str, Function(a, b)
Dim aContents As String = IO.File.ReadAllText(a)
Dim bContents As String = IO.File.ReadAllText(b)
'Compare the contents and return -1 if a < b, 0 if a = b, or 1 if a > b.
End Function)
Если эффективность проблема есть, вы можете захотеть кэшировать содержимое каждого файла в Dictionary
или сделать что-то аналогичный.
Кроме того, вы можете пойти LINQ, в зависимости от того, что именно это в файлах вам нужно сортировать по:
Dim result = str.
Select(Function(x) New With {.File = x, .Contents = IO.File.ReadAllText(x)}).
OrderBy(Function(y) y.Contents)
... например.
Сначала вам нужно посмотреть, что в каждом файле. Прокрутите строки, посмотрите на файл и выясните, в какой позиции он должен находиться. Это должно заставить вас начать. – David