C# Sort files by natural number ordering in the name?
c#
Solution
Alphabetically, the "wrong" order is in fact correct. If you want it sorted numerically then you'll need to either:
- convert the filenames to a list of numeric numbers and sort them
- name the files in such a way that alphabetic and numeric sorting are the same (0-001.jpeg and 0-030.jpg)
- rely on the file creation time to sort (presuming the files were created in order).
See the answer to Sorting Directory.GetFiles() for an example of #3.
Problem
I have files in directory like that ``` 0-0.jpeg 0-1.jpeg 0-5.jpeg 0-9.jpeg 0-10.jpeg 0-12.jpeg ``` .... when i loading files: ``` FileInfo[] files = di.GetFiles(); ``` They getting in wrong order (they should go like above): ``` 0-0.jpeg 0-1.jpeg 0-10.jpeg 0-12.jpeg 0-5.jpeg 0-9.jpeg ``` How to fix that? I was trying to sort them but no way: ``` 1) Array.Sort(files, (f1, f2) => f1.Name.CompareTo(f2.Name)); 2) Array.Sort(files, (x, y) => StringComparer.OrdinalIgnoreCase.Compare(x.Name, y.Name)); ```