2013-05-02 2 views
0

5 분마다 SQL Server 테이블에서 한 행이 추가됩니다. 필드는 다음과 같습니다. DateTime timeMark, Int total.datetime 별 엔터티 프레임 워크 그룹화

엔티티 프레임 워크 사용 지난 3 개월 동안의 총 평균을 사용하여 5 분 값으로 1 주일을 새 목록으로 채 웁니다.

어떻게 Entity Framework에서이 작업을 수행합니까?

+0

내 눈에는 "지난 3 개월 간의 합계 평균을 사용하는 5 분간의 전체 주"라는 질문이 분명하지 않으며 어떤 시도도 표시하지 않습니다. 문제 ? –

+0

ok 5 분마다 로그 테이블이 업데이트됩니다. 나는 매 5 분마다 마지막 3 개월을 요약 할 수 있기를 원한다. – Paul

답변

2

로그가 실제로 "5 개 항목"에 해당하고 잘 이해했다면 일, * 24 시간 * (60/5) 분, 2016 결과가 포함 된 목록을 원하십니까?

//define a startDate 
var beginningDate = <the date 3 month ago to start with>; 

//get the endDate 
var endDate = beginningDate.AddMonths(3); 
var list = myTable.Where(m => m.TimeMark >= beginningDate && m.TimeMark <=endDate) 
      //group by dayofWeek, hour and minute will give you data for each distinct day of week, hour and minutes 
      .GroupBy(m => new { 
       dayofWeek = SqlFunctions.DatePart("weekday", m.TimeMark), 
       hour = SqlFunction.DatePart("hour", m.TimeMark), 
       minute = SqlFunctions.DatePart("minute", m.TimeMark) 
      }) 
      .Select(g => new { 
       g.Key.dayofWeek, 
       g.Key.hour, 
       g.Key.minute, 
       total = g.Average(x => x.Total) 
      }); 
+0

환호성 라파엘이 그것을 줄 것이다 .... – Paul

+0

시간 마커에 대한 귀하의 의견대로 네. 시간 기록표. 시간외 등등은 제외됩니다. – Paul

+0

@ user2018978하지만 SqlFunctions.DatePart 버전에서 작동합니까? –