2012-03-31 5 views
0

Каждая строка массива представляет текстовый файл в папке. Я хочу, чтобы массив сортировался в зависимости от того, что содержит текстовый файл. Как мне это сделать?Сортировка по строкам в массиве?

+0

Сначала вам нужно посмотреть, что в каждом файле. Прокрутите строки, посмотрите на файл и выясните, в какой позиции он должен находиться. Это должно заставить вас начать. – David

ответ

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) 

... например.