我有以下内容:
var selectedFilesToReplace = new List<string>();
foreach (string file in files)
{
selectedFilesToReplace.AddRange(listUploadedFiles
.Where(x => Path.GetFileNameWithoutExtension(x) == file));
}
用一组FULL路径文件填充selectedFilesToReplace集合。 我只需要选择文件名及其扩展名。
单个Linq表达式中是否可以这样做?
答案 0 :(得分:3)
像这样:
selectedFilesToReplace.AddRange(listUploadedFiles
.Where(x => Path.GetFileNameWithoutExtension(x) == file))
.Select(p => Path.GetFileName(p));
在C#4中,你也可以写
selectedFilesToReplace.AddRange(listUploadedFiles
.Where(x => Path.GetFileNameWithoutExtension(x) == file))
.Select(Path.GetFileName);
答案 1 :(得分:1)
var fileNameOnly = selectedFilesToReplace.Select(Path.GetFileName);
答案 2 :(得分:0)
这是一个较短的实现,作为单个表达式:
var selectedFilesToReplace =
listUploadedFiles.Where(
f => files.Contains(
Path.FileNameWithoutExtension(f)))
.ToList();
虽然恕我直言.ToList()
可能只是多余的。