2012-08-28 1 views
0

그룹 매개 변수가 사용자 인터페이스에서 변경 될 수 있기 때문에 동적 계산에 GroupBy를 추가하는 corect 구문을 찾고 있습니다.VB.Net Linq는 표현식 트리를 통해 GroupBy를 추가합니다.

는 기본적으로 I는 내가 변경 가능한 매개 변수

일, 주, 월, 년

대신

같은 4 개 쿼리를 writeing에 대한 GROUPBY를 추가 할 수있는 Linq.EntitySet이
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()}) 

표현 트리를 통해 동적으로 그룹을 추가하고 싶습니까? 아니면 더 간단한 방법이 있습니까?

감사합니다.

+0

가 있다면 단지 4, 왜 switch 문을하지? – casperOne

+0

예 스위치 문을 사용할 수 있지만 더 좋은 방법이 있어야합니다! 하나 이상의 EntitySet에 대해이 작업을 수행해야하며 매우 혼란 스러울 것입니다! –

답변

0

필자는 생각보다 단순 해 보입니다. 사람이 더 나은 아이디어가 있으면 어떤 경우

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

+0

그래서 switch 문은 본질적으로? =) – casperOne

+0

네,하지만 함수에서 다른 유형을 캐스팅하는 방법을 몰랐습니다. linq의 유형 분석기가 데이터 유형 객체와 함께 실패한다고 가정했습니다. 하지만 작동하고있어. D –