如何从目录中获取文件名,因为它存在于C#中?

我想按顺序提取窗口浏览器中存在的所有文件名。 我用Google搜索并找到了很多答案,但这不起作用。 我有以下顺序的文件名:

video_1 video_2 video_3 video_10 video_15 video_20 video_21 

我想以相同的顺序,但结果来自以下forms。

  video_1 video_10 video_10 video_2 video_20 video_21 

我试过以下代码:

 var fileNames= Directory.GetFiles(basePath, "*" + fileExtension) //Not worked DirectoryInfo info = new DirectoryInfo(basePath); var filenames = info.GetFiles().OrderBy(p => p.CreationTIme).ToArray(); //Not worked 

谁能告诉我怎么做到这一点?

订单“不正确”的原因是因为名称是字符串,因此按字符串排序。 你想要的是按它的数字部分排序:

 DirectoryInfo info = new DirectoryInfo(""); var files = info.GetFiles() .OrderBy(p => p.FullName.Split('_')[0]) .ThenBy(p => int.Parse(p.FullName.Split('_')[1])); 

如果您不确定格式是否完全相同(使用_然后是有效数字),那么您可以:

 Func parseIntOrDefault = (input, defaultValue) => { int value = defaultValue; int.TryParse(input, out value); return value; }; var result = from file in info.GetFiles() let sections = file.FullName.Split('_') orderby sections[0], sections.Length == 2 ? parseIntOrDefault(sections[1], int.MaxValue) : int.MaxValue select file;