我试图运行这行代码:
Dim OrderedFiles() As String = Directory.GetFiles(FilePath).OrderBy(x >= x.CreationTime)
Run Code Online (Sandbox Code Playgroud)
我在x上收到错误,说x未声明.
我的项目设置为Option Strict Off和Option Infer On.如果我打开Option Strict然后我从项目中获得了数千个错误(它被继承)并且我没有时间修复所有错误,但是x不再给我一个错误.我用Google搜索,直到我想把电脑扔出窗外.
任何有关如何更正此声明的帮助将不胜感激.
编辑:
我希望有一个更优雅的解决方案,但这是我想出来解决这个特殊问题.
Dim fileList() As String = Directory.GetFiles(FilePath)
Dim fileDate(fileList.Length - 1) As DateTime
For i As Integer = 0 To fileList.Length - 1
fileDate(i) = New FileInfo(fileList(i)).CreationTime
Next
Array.Sort(fileDate, fileList)
With EmailTemplates_DropDownList
.DataSource = fileList.Reverse.Take(5)
.DataBind()
End With
Run Code Online (Sandbox Code Playgroud)
它并不是特别优雅,但它可以完成这项工作.我希望有一个单线LINQ解决方案,我只是没有LINQ的背景知道如何做这个工作,有时间去买书.
我不确定你从哪里获得这种语法:
OrderBy(x >= x.CreationTime)
Run Code Online (Sandbox Code Playgroud)
这几乎就像是C#的语法
OrderBy(x => x.CreationTime)
Run Code Online (Sandbox Code Playgroud)
但我相信你会使用VB
OrderBy(Function(x) x.CreationTime)
Run Code Online (Sandbox Code Playgroud)
这肯定是示例Enumerable.OrderBy所暗示的.
编辑:那时你会得到一个不同的错误,根据史蒂夫的帖子...但他没有纠正语法.我怀疑你想要:
Dim OrderedFiles() As FileInfo = new DirectoryInfo(FilePath).GetFiles().
OrderBy(Function(x) x.CreationTime).
ToArray()
Run Code Online (Sandbox Code Playgroud)