2016-01-30 4 views
0

Я работаю над средством просмотра изображений C#, которое будет считывать изображения с моего компьютера и показывать их в программе.Заявки на имена файлов по номеру

//foreach file in path display the filename 

foreach (var filename in Directory.GetFiles(<path>)) 
{ 
    MessageBox.show(filename); 
} 

//Get image by number 

var image = Directory.GetFiles(<path>).elementatordefault(<picnumber>).tostring()); 

Моя проблема заключается в том, что даже если мои изображения ранжируются в папке: 1,2,3,4 ..... 12,13,14 .... 101102, мое приложение будет показывать файлы в следующем порядке: 1,101,102,12,13,2 ...

Как бы показать изображения в правильном порядке, как в папке компьютера? Я не могу поверить, что мне нужно будет добавить каждый файл в массив или список, а затем преформировать алгоритм сортировки ... (Мне также нужно разделить путь и расширение файла), должен быть более простой способ сделать это, Любая помощь приветствуется.

+2

Реализация [натуральный сорт] (http://stackoverflow.com/questions/248603/natural-sort-order-in-c-sharp). – CodeCaster

+1

'Directory.GetFiles' не накладывает порядок на имена файлов, возможно, проводник Windows. Тип сортировки, который вы хотите, называется «естественной сортировкой», и, как всегда, если этот код не гарантирует сортировку данных, которые сортируются так, как вы хотите, вам нужно отсортировать данные самостоятельно, если вы хотите, чтобы они отсортировались. –

+0

не может использовать linq? вы пытались заказать их с помощью linq? Если он возвращает массив строк, проверьте этот другой столбец StackOverflow [Сортировка строкового массива в C#] (http://stackoverflow.com/questions/6167068/sorting-string-array-in-c-sharp) – rmjoia

ответ

1

Я, наконец, тоже обдумывал, как сортировать файлы в «естественном порядке», возможно, кто-то найдет этот код полезным как тоже, как я это сделал.

 List<string> mylist = new List<string> { }; 
     foreach (var f in Directory.GetFiles(FilePath1)) 
     { 
      mylist.Add(f); 
     } 

     var result = mylist.OrderBy(x => x.Length); 
0

Вам необходимо отсортировать и применить собственный компас, если вы знаете формат имен файлов. Эта тема может быть вам полезной: Sorting mixed numbers and strings

Смежные вопросы