从文件夹列表中检索一个文件路径的最有效方法

时间:2014-11-04 11:17:54

标签: c# linq

假设我有一个包含100多个文件夹路径的列表。我想从每个文件夹路径中只检索一个文件路径。这是我正在做或计划这样做的方式:

var Files = new List<String>();
var Directories = Directory.GetDirectories("C:\\Firstfolder\\Secondfolder\\");
Array.ForEach(Directories, D => Files.Add(Directory.GetFiles(D).FirstOrDefault()));

现在,这是最有效的方式吗?因为我的程序每次启动时都会执行此代码。

2 个答案:

答案 0 :(得分:6)

而不是Directory.GetFiles使用Directory.EnumerateFiles来避免将所有文件路径加载到内存中。documentation的引用解释了差异:

  

EnumerateFilesGetFiles方法的不同之处如下:使用EnumerateFiles时,可以在返回整个集合之前开始枚举名称集合;当您使用GetFiles时,必须等待返回整个数组,然后才能访问该数组。因此,当您使用许多文件和目录时,EnumerateFiles可以更有效。

答案 1 :(得分:1)

如果你使用的是.Net 4.0,你应该这样做......

var Files = Directories.SelectMany(x => Directory.EnumerateFiles(x).FirstOrDefault()).ToList();