Hi.
Ich versuche momentan Dateien aus einem Ordner in einer gen. Liste einzulesen.
Zuvor sortiere und filtere ich diese Dateien, sodass nur die Bilder aufgenommen werden.
Mein Problem is nun, dass die Sortierung nicht richtig durchgeführt wird.
Der Code:
private List<string> fileList = new List<string>();
private List<string> whitelistExtension = new List<string>();
whitelistExtension.Add(".jpg");
whitelistExtension.Add(".png");
DirectoryInfo di = new DirectoryInfo(filePath);
FileSystemInfo[] files = di.GetFileSystemInfos("*.*", SearchOption.AllDirectories);
Array.Sort<FileSystemInfo>(files, delegate(FileSystemInfo a, FileSystemInfo b)
{
return a.Name.CompareTo(b.Name);
});
foreach (FileInfo fiTemp in files)
{
if (whitelistExtension.IndexOf(fiTemp.Extension.ToLower()) == -1)
continue;
fileList.Add(fiTemp.Name);
}
Im Ordner sind bspw. folgende Dateien:
1.jpg; 2.jpg; 3.jpg; 10.jpg; 11.jpg; 100.jpg; 110.jpg; usw.
Nun sieht es nach der Sortierung so aus:
1.jpg; 10.jpg; 100.jpg; 11.jpg; usw. und dann geht es erst wieder bei 2;3... weiter.
Hat jemand ne Idee woran das liegen kann?
Strings werden so sortiert. Wenn du sie numerisch sortieren möchtest müsstest du einen eigenen Comparer schreiben und mit angeben.
Hi,
ungetestet könnte folgendes funktionieren, ansonsten müsstest Du evtl. einen eigenen Comparer schreiben, der die Zahlen der Strings des Filenamens erkennt und daran sortiert:
List<string> files = new List<string>();
files.AddRange( Directory.EnumerateFiles( "path", "*.jpg", SearchOption.AllDirectories ) );
files.AddRange( Directory.EnumerateFiles( "path", "*.png", SearchOption.AllDirectories ) );
files = files.OrderBy( fileName => fileName.Length ).ThenBy( fileName => fileName ).ToList();
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Und da wir NaturalSort (natsort) hier ständig haben, gibt es bestimmt auch was per suche.
Hallo,
so ist es, z.B. in Natürliche Sortierung implementieren ("img2.jpg" vor "img10.jpg") - und sogar in den Snippets: Natürliche Sortierung (Natural Sorting) für C#
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"