获取除了重复项之外没有扩展名的文件名

本文关键字:扩展名 文件名 获取 | 更新日期: 2023-09-27 18:16:04

我正在用文件夹中的所有文件名填充一个列表(减去那些具有。blah扩展名的文件名)。我希望文件名没有扩展名,除非目录包含两个相同的文件名(但扩展名明显不同)。

这里有一个例子…

从文件夹中取出以下文件:

blah.txt
blah.doc
test.txt
ex.dox

我想在我的列表中发生什么:

blah.txt
blah.doc
test
ex

这是我到目前为止所拥有的,但这显然只是添加所有没有扩展名的文件,而不考虑同名的文件:

foreach (string file in Directory.GetFiles(folderName).Where(name => !name.EndsWith(".blah")))
{
    list.Add(Path.GetFileNameWithoutExtension(file));
}

我想知道是否会有一个很酷的,干净的方法来做到这一点。

获取除了重复项之外没有扩展名的文件名

这看起来很干净:

Directory.GetFiles(folderName)
.Where(f => !f.EndsWith(".blah"))
.Select (f => new FileInfo(f))
.Select(f => new { NoExt = Path.GetFileNameWithoutExtension(f.Name),  f.Name})
.GroupBy (f => f.NoExt)
.SelectMany(g => g.Count() > 1 ? g.Select(f => f.Name) 
                               : g.Select (f => f.NoExt))

使用以下文本。希望它能帮助你和其他人:

Directory.GetFiles(directory, .extension)
         .Select(path => Path.GetFileNameWithoutExtension(path))
         .ToArray();