【发布时间】:2010-05-12 15:29:07
【问题描述】:
以下工作,但我想 - 因为它都是基于IEnumerable,Linq 可以派上用场这里很好。顺便说一句,是否有与Directory.GetFiles() 等效的方法,它会返回一个 IEnumerable 而不是数组?如果它存在,那么它会使代码运行得更快吗?问题的最后一部分受到 Python 语言的启发,该语言偏爱轻量级生成器而不是具体列表。
private IEnumerable<string> getFiles(string strDirectory, bool bCompressedOnly)
{
foreach (var strFile in Directory.GetFiles(strDirectory))
{
// Don't add any existing Zip files since we don't want to delete previously compressed files.
if (!bCompressedOnly || Path.GetExtension(strFile).ToLower().Equals(".zip"))
{
yield return strFile;
}
}
foreach (var strDir in Directory.GetDirectories(strDirectory))
{
foreach (var strFile in getFiles(strDir, bCompressedOnly))
{
yield return strFile;
}
}
}
【问题讨论】:
-
.NET Framework 4.0 中有新的
Directory.Enumerate*方法,它们返回一个 IEnumerable。