我是使用enumerateFiles的新手。我试图在超过20,000的目录中获取50个最新文件。我似乎无法理解使OrderByDescending工作所需的语法。我看过intellisense,我只是不明白。有人可以帮忙吗?
Dim root As String = "C:\Test"
Dim files = From file In
Directory.EnumerateFiles(root).Take(50).OrderByDescending(Of String)
答案 0 :(得分:0)
使用LINQ有不同的语法。
第一个看起来有点像SQL(From x In y),我不熟悉它。
另一个看起来像集合上的常见函数。这些功能将从左到右执行,因此您的工作示例
Directory.EnumerateFiles(root).Take(50).OrderByDescending(Of String)
首先执行EnumerateFiles
。然后它将从EnumerateFiles
的结果中获取前50个项目,然后它将按降序对前50个项目进行排序。
由于你想要反过来(首先按日期降序排序,然后取前50项)你必须稍微调整你的代码。
Dim root As String = "C:\Test"
Dim files As IEnumerable(Of String) = IO.Directory.EnumerateFiles(root) _
.OrderByDescending(Of String)(Function(x As String) x) _
.Take(50)
现在它会按名称按降序对文件进行排序。如果您希望按其他条件排序,则必须更改代码的OrderByDescending
部分,例如
....OrderByDescending(Of Date)(Function(x As String) IO.File.GetLastAccessTime(x))...
我希望这会有所帮助。