0

使用 LINQ to NHibernate 是否有人知道如何在同一表达式中使用 group by 和 order by。我必须将 group by 执行到一个列表中,然后订购这个,似乎我在这里遗漏了什么???

例子:-

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
4

1 回答 1

1

我不是 Visual Basic 专家,但您应该能够在Select子句中使用别名来创建临时变量,以便您可以在后面的子句中引用它,例如Order By. 除非 NHibernate 有一些限制,否则以下应该可以工作:

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

我想在某些情况下,这可能比将子句移到Order By子句之前更具可读性Select

于 2010-03-24T16:19:40.263 回答