C# GetFiles()未返回目录C中的第一个文件名#

C# GetFiles()未返回目录C中的第一个文件名#,c#,console-application,getfiles,C#,Console Application,Getfiles,我正在编写一个测试脚本,以便在更大的脚本中使用。我需要得到音乐目录中的第一个文件,这样我就可以自动打开wmplayer并播放第一首歌曲 如果我硬编码文件名并启动进程,它就会工作。但是,如果其他人想要使用该脚本,我需要获取第一个文件名。例如,我的硬编码版本是: Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3"); 当我尝试获取测试脚本中音乐文件夹中的第一个文件时,它将返回图

我正在编写一个测试脚本,以便在更大的脚本中使用。我需要得到音乐目录中的第一个文件,这样我就可以自动打开wmplayer并播放第一首歌曲

如果我硬编码文件名并启动进程,它就会工作。但是,如果其他人想要使用该脚本,我需要获取第一个文件名。例如,我的硬编码版本是:

Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3");
当我尝试获取测试脚本中音乐文件夹中的第一个文件时,它将返回图片中的文件:

哪一个不是正确的!我做错了什么?以下是我的片段:

using System;
using System.IO;
using System.Linq;

namespace GetFileTest
{
    class Program
    {
        static void Main(string[] args)
        {
            String username = Environment.UserName;
            String path = @"C:\Users\" + username + @"\Music";
            DirectoryInfo di = new DirectoryInfo(path);
            string firstFile = di.GetFiles().Select(fi => fi.Name).FirstOrDefault();

            Console.WriteLine(firstFile);            
        }        
    }
}
我也尝试过:

string firstFile = di.GetFiles()[0].ToString();

无济于事。这和单引号有关吗

在选择第一个文件名之前,必须对文件名进行排序:

di.GetFiles().OrderBy(fi => fi.Name).Select(fi => fi.Name).FirstOrDefault();

我不知道OrderBy()方法的存在。非常感谢你的帮助。它工作得很好。还考虑使用<代码> EnumerateFiles <代码>而不是<代码> GETFrase。