从IEnumerable<>中选择文件

时间:2010-09-02 09:25:57

标签: c# linq

我有以下内容:

var selectedFilesToReplace = new List<string>();
foreach (string file in files) 
{
    selectedFilesToReplace.AddRange(listUploadedFiles
        .Where(x => Path.GetFileNameWithoutExtension(x) == file));
}

用一组FULL路径文件填充selectedFilesToReplace集合。 我只需要选择文件名及其扩展名。

单个Linq表达式中是否可以这样做?

3 个答案:

答案 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()可能只是多余的。