Vb.net Net linq通过表达式树添加GroupBy

Vb.net Net linq通过表达式树添加GroupBy,vb.net,linq,group-by,expression-trees,Vb.net,Linq,Group By,Expression Trees,我正在寻找corect语法来将GroupBy添加到Linq表dynamicali中,因为group参数可以在用户界面中更改 基本上,我有一个Linq.EntitySet,我想为可变参数添加一个GroupBy 一天, 周, 月, 年 而不是像这样编写4个查询 data.View.GroupBy(Function(x) x.Moment.Date).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Coun

我正在寻找corect语法来将GroupBy添加到Linq表dynamicali中,因为group参数可以在用户界面中更改

基本上,我有一个Linq.EntitySet,我想为可变参数添加一个GroupBy

一天, 周, 月, 年

而不是像这样编写4个查询

data.View.GroupBy(Function(x) x.Moment.Date).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Count = x.Count()})

data.View.GroupBy(Function(x) x.Moment.Week).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Count = x.Count()})

data.View.GroupBy(Function(x) x.Moment.Month).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Count = x.Count()})

data.View.GroupBy(Function(x) x.Moment.Year).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Count = x.Count()})
我喜欢通过表达式树动态添加组,还是有更简单的方法


谢谢你的建议

令人惊讶的是,它比我想象的要简单

    Private Function bar(x As Date) As Object
        Select Case ddlStatRange.SelectedValue
            Case 1
                Return x.Month
            Case 2
                Return x.Month
            Case 3
                Return x.Year
            Case Else
                Return x.Date
        End Select
    End Function

    Dim foo = data.View.GroupBy(Function(x) bar(x.Moment)).OrderBy(Function(x) x.Key).Select(Function(x) New With {.Date = x.Key, .Count = x.Count()}) 

在任何情况下,如果有人有更好的想法:D

如果只有四个,为什么不做一个switch语句呢?是的,我可以做一个switch语句,但必须有更好的方法!我必须为不止一个EntitySet这样做,这将变得非常混乱!那么,一个switch语句,本质上是?=)是的,但我不知道如何从函数中转换不同的类型。我认为linq的类型分析器会因为datatype对象而失败。但它起作用了:D