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

GetFiles() not returning first file name in directory C#

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

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

Process.Start("wmplayer.exe", "C:\Users\" + username + "\Music\A_ChillstepMix.mp3");

当我尝试在我的测试脚本中获取 Music 文件夹中的第一个文件时,它返回了图片中的文件:

哪一个不正确!我究竟做错了什么?这是我的片段:

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();

无济于事。它与单引号有关吗?

您必须将文件名排序在 select 第一个之前:

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