Vb.net 无法返回日期时间的排序iqueryable

Vb.net 无法返回日期时间的排序iqueryable,vb.net,linq,entity-framework,Vb.net,Linq,Entity Framework,当我试图返回此日期列表时,总是得到错误的结果 已更新 Private Shared Function GetDistinctDates(ByRef ctx As ToolkitEntities, ByVal symbol As String, ByVal interval As Integer,

当我试图返回此日期列表时,总是得到错误的结果

已更新

  Private Shared Function GetDistinctDates(ByRef ctx As ToolkitEntities,
                                             ByVal symbol As String,
                                             ByVal interval As Integer,
                                             Optional isRangeProj As Boolean = False) As  List(Of Date)
        Dim numDates As Integer = 0
        If isRangeProj = True Then
            numDates = 3
        Else
            numDates = TakeValue(interval)
        End If

        Dim dates = (From data In ctx.tsintracharts
                     Where data.Symbol = symbol
                     Select data.Date).Distinct().ToList()

        'Dim datelist As IQueryable(Of Date) = dates.OrderByDescending(Function(o) o).Take(numDates)
        Return dates
    End Function
不进行排序,返回整个日期列表

我以前使用函数语法和在linq语句中将OrderBy放在Select之前,按日期排序。我只是想在不同的日期列表中返回最近的三个日期

但是,如果我将orderby移动到LINQ语句中,则不会发生排序

  Dim dates = (From data In ctx.tsintracharts
                    Where data.Symbol = symbol
                    Order By data.Date Descending
                    Select data.Date
                    ).Distinct()

Take(numDates)实际上只返回三个日期。问题是它们总是最老的,我需要最新的。

哇,很差劲,但它可以工作。任何能改进这种方法的人都将是我的英雄,因为我确信有比这个答案描述的方法更好的方法来完成这项工作

Private Shared Function GetDistinctDates(ByRef ctx As ToolkitEntities,
                                             ByVal symbol As String,
                                             ByVal interval As Integer,
                                             Optional isRangeProj As Boolean = False) As List(Of Date)
        Dim numDates As Integer = 0
        If isRangeProj = True Then
            numDates = 3
        Else
            numDates = TakeValue(interval)
        End If

        Dim dates As List(Of Date) = (From d In ctx.tsintracharts
                                      Where d.Symbol = symbol
                                      Select d.Date).Distinct().ToList()

        Dim datelist As New List(Of Date)
        For x As Integer = 1 To dates.Count
            If x > (dates.Count - numDates) Then
                datelist.Add(dates(x - 1))
            End If
        Next
        Return datelist
    End Function

首先,它应该只返回三个日期(在我测试它的例行程序中),并返回所有35个日期。我也不知道如何使用像这样的函数语法进行升序,如果这比在LINQ语句中使用OrderBy更有效的话。