使用LINQ将数据从一个列表复制到另一个列表

Sam*_*eer 2 c# linq collections list

我有两个列表public List<string> FileNamespublic List<string> FileNamesWithoutExtension.在FileNames我有完整路径的所有文件的列表中.我想只复制没有扩展名的文件名到FileNamesWithoutExtension列表.我在下面使用简单的代码:

FileNames = Directory.GetFiles(folderpath, "*").ToList();

foreach (string file in Files)
{
    FileNamesWithoutExtension.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
Run Code Online (Sandbox Code Playgroud)

如何使用LinQ做到这一点?

Sto*_*now 8

虽然你正在做的事情是绝对正常的,有时(在我看来)LINQ可以使一个简单的循环看起来有点复杂,你可以通过Select在原始列表上使用你正在寻找的东西,如下所示:

FileNamesWithoutExtensions.AddRange(
    FileNames.Select(fileName => System.IO.Path.GetFileNameWithoutExtension(fileName)));
Run Code Online (Sandbox Code Playgroud)

  • 你不应该需要.ToList().`select`将返回一个`IEnumerable <>`,这就是`AddRange`应该采用的. (2认同)