2015-06-26 7 views
0

Я пишу простую программу, чтобы получить отсортированную дату. Но это не работает.получить отсортированную дату в vb

Dim filepath As String = FileStr 
Dim directoryPath As String =  System.IO.Path.GetDirectoryName(filepath) 
for Each file As String In System.IO.Directory.GetFiles(directoryPath) 
Dates = { 
Date.Parse(System.IO.Path.GetFileNameWithoutExtension(file)) 
     }.ToList 
Next 
Dates.Sort() 
ComboBox1.DataSource = Dates 

Показывает только одну дату .. там, где более 10 дней. а также цикл работает

Я объявляю список как глобальный

ответ

1

Вы заменяющего содержание вашего списка в каждом цикле

Dim filepath As String = FileStr 
Dim directoryPath As String =  System.IO.Path.GetDirectoryName(filepath) 
for Each file As String In System.IO.Directory.GetFiles(directoryPath) 
    Dates.Add(Date.Parse(System.IO.Path.GetFileNameWithoutExtension(file))) 
Next 
Dates.Sort(AddressOf SortDate) 
ComboBox1.DataSource = Dates 

UPDATE: Сортировка вопрос

Затем в качестве отдельной функции добавить:

Function SortDate(ByVal a As DateTime, ByVal b As DateTime) 
    Dim result As Integer = a.Year.CompareTo(b.Year) 
    If result = 0 Then 
     a.Month.CompareTo(b.Month) 
     If result = 0 Then 
      a.Day.CompareTo(b.Day) 
     End If 
    End If 
    Return result 
End Function 
+0

петля не работает ... здесь – Satyajit

+0

Что проблема? до тех пор, пока инициализируется список «Даты», он будет работать –

+0

, если я поставлю сообщение msgbox (файл), оно отобразит одно значение, затем выведите его как результат – Satyajit

0

Ваша петля заменяет значение Dates каждый раз, поэтому вы получаете только одну дату.

Изменение петли следующим образом:

Dates = System.IO.Directory.GetFiles(directoryPath) 
    .Select(Function(file) Date.Parse(System.IO.Path.GetFileNameWithoutExtension(file))) 
    .ToList 
+0

показывает значение 1-мерного массива строки не может быть преобразован в список – Satyajit