我刚开始使用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)发布于 2018-03-20 22:19:01
使用LINQ有不同的语法。
第一个看起来有点像SQL (从x到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))...我希望这能帮到你。
https://stackoverflow.com/questions/49347888
复制相似问题