C# 尝试获取没有路径或扩展名的文件名并输出到列表。

C# 尝试获取没有路径或扩展名的文件名并输出到列表。,c#,C#,是同事给我的,但我只需要文件名: private List<string> getWavFileList() { string path = @"c\test automation\wave files"; string[] files = Directory.GetFiles(path, "*.wav"); List<string> list = new List<string>(file

是同事给我的,但我只需要文件名:

    private List<string> getWavFileList()
    {
        string path = @"c\test automation\wave files";

        string[] files = Directory.GetFiles(path, "*.wav");


        List<string> list = new List<string>(files);

        return list;

    }
private List getWavFileList()
{
字符串路径=@“c\test automation\wave文件”;
string[]files=Directory.GetFiles(路径“*.wav”);
列表=新列表(文件);
退货清单;
}
输出列表包含路径和扩展名,我只需要文件名。我正在使用自己的方法,但无法将其编译:

    private List<string> getWavFileList()
    {
        StringBuilder builder = new StringBuilder();
        string path = @"c\test automation\wave files";
        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] smFiles = di.GetFiles("*.wav");
            foreach (FileInfo fi in smFiles)
            {
                builder.Append(Path.GetFileNameWithoutExtension(fi.Name));
                builder.Append(", ");
            }

            string files = builder.ToString();

            List list = new List<string>(files);

            return list;
private List getWavFileList()
{
StringBuilder=新的StringBuilder();
字符串路径=@“c\test automation\wave文件”;
DirectoryInfo di=新的DirectoryInfo(路径);
FileInfo[]smFiles=di.GetFiles(“*.wav”);
foreach(smFiles中的文件信息fi)
{
Append(Path.GetFileNameWithoutExtension(fi.Name));
生成器。追加(“,”);
}
字符串文件=builder.ToString();
列表=新列表(文件);
退货清单;

在第一种解决方案中,更换该行

List<string> list = new List<string>(files);

这需要使用
系统

private List<string> getWavFileList()
{
    string path = @"c:\test automation\wave files";
    DirectoryInfo di = new DirectoryInfo(path);
    FileInfo[] smFiles = di.GetFiles("*.wav");
    List<string> list = new List<string>(smFiles.Select(f => Path.GetFileNameWithoutExtension(f.Name)));

    return list;
}
private List getWavFileList()
{
字符串路径=@“c:\test automation\wave files”;
DirectoryInfo di=新的DirectoryInfo(路径);
FileInfo[]smFiles=di.GetFiles(“*.wav”);
List List=新列表(smFiles.Select(f=>Path.GetFileNameWithoutExtension(f.Name));
退货清单;
}

我不知道你为什么要用逗号连接字符串,我以为你想要一个列表:

private List<string> getWavFileList()
{
    return Directory.EnumerateFiles(@"c\test automation\wave files", "*.wav")
        .Select(System.IO.Path.GetFileNameWithoutExtension)
        .ToList();
}
private List getWavFileList()
{
返回目录.EnumerateFiles(@“c\test automation\wave files”,“*.wav”)
.Select(System.IO.Path.GetFileName WithOutExtension)
.ToList();
}

编译器有没有特别提到它无法编译的原因?那不会编译either@PanagiotisKanavos,正确,我错过了源代码中的非通用
列表
。我已经更新了。你比我先更新了。如果是
EnumerateFiles
@PanagiotisKanavos:ok,已编辑,但也使用了OP
GetFiles
我不想更改没有明显改进的未注释文件。如果他必须筛选文件,我会使用它。我知道,我也不想把它作为答案。关于迭代器、IEnumerable、临时对象和GC的讨论会有点过头。除非有很多文件
private List<string> getWavFileList()
{
    return Directory.EnumerateFiles(@"c\test automation\wave files", "*.wav")
        .Select(System.IO.Path.GetFileNameWithoutExtension)
        .ToList();
}