我正在尝试使用目录中的文件填充列表框,但我想通过filesize对它们进行排序。我在哪里做这个条件? Inisde字符串或foreach语句?
{{1}}
答案 0 :(得分:1)
稍微修改你的LINQ。
示例:
string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls")
.Select( path => new FileInfo(path) )
.Where
(
info => info.CreationTime.Date >= DateTime.Today.Date
&& info.Name.Contains("AA")
)
.OrderByDescending(info => info.Length )
.Select( info => info.FullName )
.ToArray();
答案 1 :(得分:1)
在这种情况下,我会使用DirectoryInfo.GetFiles
(或更好,.EnumerateFiles
)而不是Directory
,因为您对扩展文件属性感兴趣。这样,每次要检查文件属性(如FileInfo
或CreationTime
)时,都不需要创建多个新Length
对象:
FileInfo[] files = new DirectoryInfo(FDB.SelectedPath)
.EnumerateFiles("*.xls")
.Where(file => file.CreationTime.Date >= DateTime.Today
&& file.Name.Contains("AA"))
.OrderBy(file => file.Length)
.ToArray();
如果在初始查询之后不需要完整的FileInfo
对象属性,那么您只需选择FullName
属性来获取字符串数组:
string[] files = new DirectoryInfo(FDB.SelectedPath)
.EnumerateFiles("*.xls")
.Where(file => file.CreationTime.Date >= DateTime.Today
&& file.Name.Contains("AA"))
.OrderBy(file => file.Length)
.Select(file => file.FullName) // Gets only the full path and file name
.ToArray();