2010-09-02 37 views
0

我有以下几点:自IEnumerable选择文件<>

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

,填补了selectedFilesToReplace收集了一套完整路径文件。 我只需要选择带扩展名的文件名。

这是可能的一个单一的Linq表达式?

回答

1
var fileNameOnly = selectedFilesToReplace.Select(Path.GetFileName); 
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); 
+0

我还没有切换C#4; “返回类型推断对方法组不起作用”的限制是否已被解除? http://blogs.msdn.com/b/ericlippert/archive/2007/11/05/c-3-0-return-type-in​​ference-does-not-work-on-member-groups.aspx – Ani 2010-09-02 09:32:30

+1

@Ani:是的。 – SLaks 2010-09-02 18:20:18

0

这里是一个更短的实施作为一个单一的表达:

var selectedFilesToReplace = 
    listUploadedFiles.Where(
     f => files.Contains(
     Path.FileNameWithoutExtension(f))) 
      .ToList(); 

虽然恕我直言.ToList()是亲可能只是多余的。

相关问题