使用LINQ我想检索给定目录下的文件大小小于/大于指定文件大小的所有文件。
我有以下代码,目前返回List:
public static List<string> getFs(string sDir)
{
var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories)
.Where(s => s.ToLower().EndsWith(".psd"));
return files.ToList();
}
我发现以下代码由Monsieur Skeet提供,似乎可以访问文件大小:
long diskSpace = (from directory in Directory.EnumerateDirectories(@"c:\")
from file in Directory.EnumerateFiles(directory)
select file)
.Sum(file => new FileInfo(file).Length);
我如何调整文件大小方面的内容到我现有的代码中,或者这是我在已有的情况下的错误方法?
答案 0 :(得分:3)
您只需添加额外的Where
...例如:
public static List<string> getFs(string sDir)
{
var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories)
.Where(s => s.ToLower().EndsWith(".psd"))
.Where(s => new FileInfo(s).Length > 10000);
return files.ToList();
}
当然,您也可以合并两个Where
条款;为清楚起见,我将它们分开。这同样有效:
var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories)
.Where(s => s.ToLower().EndsWith(".psd") && new FileInfo(s).Length > 1000000);