Ham*_*jan 1 linq directory .net-3.5
以下作品,但我想 - 因为它全部基于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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为我更喜欢这个,但......
return (
from file in Directory.GetFiles(strDirectory)
where !bCompressedOnly
|| Path.GetExtension(file).ToLower().Equals(".zip")
select file
).Concat(
from directory in Directory.GetDirectories(strDirectory)
from file in getFiles(directory, bCompressedOnly)
select file
);
Run Code Online (Sandbox Code Playgroud)
.NET 4中的新功能:
private static IEnumerable<string> getFiles(string strDirectory,
bool bCompressedOnly)
{
return Directory.EnumerateFiles(strDirectory,
bCompressedOnly ? "*.zip" : "*.*", SearchOption.AllDirectories);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
172 次 |
最近记录: |