代码之家  ›  专栏  ›  技术社区  ›  Simon Thompson

分组依据和排序依据

  •  0
  • Simon Thompson  · 技术社区  · 16 年前

    用linq来表示nhibernate,任何人都知道如何用相同的表达式来表示group by和order by。我必须先把这个组执行到一个列表中,然后再排序,好像我在这里遗漏了soemting????

    示例:

    Private function LoadStats(...) ...
      Dim StatRepos As DataAccess.StatsExtraction_vwRepository = New DataAccess.StatsExtraction_vwRepository
    
      return (From x In StatRepos.GetAnswers(Question, Questionnaire) _
                  Group x By xData = x.Data Into Count() _
                  Select New ChartData 
                       With {.TheData = xData, 
                             .TheValue = xData.Count}
             ).ToList.OrderBy(Function(x) x.TheData)
    
    End Sub
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Tomas Petricek    16 年前

    我不是Visual Basic专家,但您应该能够在 Select 子句创建一个临时变量,以便在后面的子句中引用它,例如 Order By . 除非NHiberinate有一些限制,否则以下内容应该有效:

    return From x In StatRepos.GetAnswers(Question, Questionnaire) _ 
           Group x By xData = x.Data Into Count() _ 
           Select res = New ChartData With _
             { .TheData = xData,  _
               .TheValue = xData.Count } _
           Order By res.TheData _
           Select res
    

    我想在某些情况下,这可能比移动 排序依据 条款 选择 条款。