如何使用枚举文件以降序获取文件

时间:2018-03-18 12:30:27

标签: vb.net

我是使用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)

1 个答案:

答案 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))...

我希望这会有所帮助。