Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件名c中的顺序字符串[]路径#_C#_String - Fatal编程技术网

C# 文件名c中的顺序字符串[]路径#

C# 文件名c中的顺序字符串[]路径#,c#,string,C#,String,我的软件有问题,我需要订购一系列位于不同文件夹中的.mp4视频 现在,我可以按照以下说明检索所有视频: string[] video = Directory.GetFiles("..\\..\\", "*.mp4", SearchOption.AllDirectories); 但我没有我的视频按名称排序,它们是按文件夹排序的 有什么想法吗 谢谢在代码中添加以下using语句: using System.Linq; 然后可以按字符串对数组进行排序: video = video.OrderBy(

我的软件有问题,我需要订购一系列位于不同文件夹中的.mp4视频

现在,我可以按照以下说明检索所有视频:

string[] video = Directory.GetFiles("..\\..\\", "*.mp4", SearchOption.AllDirectories);
但我没有我的视频按名称排序,它们是按文件夹排序的

有什么想法吗


谢谢

在代码中添加以下using语句:

using System.Linq;
然后可以按字符串对数组进行排序:

video = video.OrderBy(x => Path.GetFileName(x)).ToArray();
你可以用

 video.OrderBy(Path.GetFileName).ToArray();
您可以使用以下选项:

var ordered = video.OrderBy(filename => Path.GetFilename(filename));

这正是我的观点:如果目录中有文件夹,默认情况下,此搜索基于文件夹顺序,然后是文件顺序。如果您在.NET 4.0或更高版本,请附带说明。EnumerateFiles。Hamlet,您不需要lambda。谢谢你,我一直不明白为什么人们会默认调用.ToArray()或.ToList()。如果他只对第一个感兴趣怎么办。ToArray()将对所有变量进行迭代。是的,但使用方法组并不直观,这是可以理解的。@JeroenvanLangen-GetFiles返回一个字符串数组,如果要应用于同一个变量,那么它也需要是一个数组。哈姆雷特,我觉得这和我以前读过的一样易懂it@QtX为什么不呢?根据OP中的“原始规范”,两个同名但位于不同文件夹中的文件将属于“未定义行为”。现在,如果它在我的位置,我会希望这样的情况下有一个确定性的排序,即使它不是“规范的一部分”,所以我会做的是
video.OrderBy(Path.GetFileName)。然后by(x=>x)
,如果文件命名有关联,它会使用文件夹排序。这仍然会按完整路径排序。