2016-04-26 3 views
0

Voici ce que j'ai essayé:Comment trier les fichiers PDF dans un répertoire dans l'ordre numérique par son nom dans C#

var vv = new DirectoryInfo(@"C:\Image").GetFileSystemInfos("*.bmp").OrderBy(fs=>int.Parse(fs.Name.Split('_')[1].Substring(0, fs.Name.Split('_')[1].Length - fs.Extension.Length))); 
+1

Avez-vous un exemple des noms de fichiers que vous essayez de trier? – Mikanikal

+0

http://stackoverflow.com/questions/12077182/c-sharp-sort-files-by-natural-number-ordering-in-the-name –

Répondre

0

Je vous recommande de créer une classe de tri personnalisé qui implémente l'interface IComparer pour trier le tableau FileSystemInfo.

Ouais, ce n'est pas aussi sexy que LINQ, mais il est propre

 DirectoryInfo di = new DirectoryInfo("C:\\Image"); 
     FileSystemInfo[] fi = di.GetFileSystemInfos("*.bmp"); 

     Array.Sort(fi, new SortByNum()); 

public class SortByNum : IComparer<FileSystemInfo> 
{ 
    public int Compare(FileSystemInfo x, FileSystemInfo y) 
    { 
     // extract the numeric portion of the file name 
     int val_x = int.Parse(x.Name.Split('_')[1].Substring(0, x.Name.Split('_')[1].Length - x.Extension.Length)); 
     int val_y = int.Parse(y.Name.Split('_')[1].Substring(0, y.Name.Split('_')[1].Length - y.Extension.Length)); 

     return val_x.CompareTo(val_y); 
    } 
}