Вы можете просто использовать оператор OrderBy linq и разобрать имя файла, чтобы получить то, что вы хотите.Также вам не нужно ToList()
, если все, что вам нужно, это простой список, такой как IEnumerable
.
Например:
var txtFiles = Directory.EnumerateFiles(folder, "*.txt")
.Select(Path.GetFileName)
.OrderBy(file =>
{
string[] nameParts = file.Split('_');
if (nameParts.Length > 0)
{
int sortValue;
if (int.TryParse(nameParts[0], out sortValue))
{
return sortValue;
}
}
return 0;
});