LINQ VB.Net变量未声明错误

Str*_*der 2 linq vb.net

我试图运行这行代码:

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的背景知道如何做这个工作,有时间去买书.

Jon*_*eet 5

我不确定你从哪里获得这种语法:

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)