0
을 사용하여 월별로 그룹화 매일 데이터 레코드를 검색 할 수 있습니다 :가장 효율적인 방법은 내가 다음과 같은 구조의 테이블이 EF 6
| Column Name | Type |
|-------------|--------------- |
| ProjectId | INT |
| StartDate | INT |
| Amount | DECIMAL(12, 2) |
StartDate
는 INT
입니다 만, 실제로는 형식 YYYYMMDD
에, 하루 나타냅니다 .
프로젝트 (전용 일, 아니 일요일이나 토요일 저장되지 않습니다)의 테이블에는 매일 숫자 값
다음과 같이| ProjectId | StartDate | Amount |
|-----------|-----------|--------|
| 1 | 20140926 | 0.5 |
| 1 | 20140929 | 0.5 |
| 1 | 20140930 | 0.8 |
| 1 | 20141001 | 1 |
| 1 | 20141002 | 1 |
| 1 | 20141003 | 0.5 |
| 2 | 20141001 | 0.6 |
| 2 | 20141002 | 0.5 |
의 월 평균 값을 얻을 수있는 가장 효율적인 방법이 될 것입니다 무엇 각 프로젝트? EF 6 (DbContext
접근 방식)과 SQL Server 2012를 사용하고 있습니까? 나는 Linq-to-Entities를 사용하는 솔루션을 찾고있다.
이상적인 결과는 다음과 같이 될 것이다 : 나는 해결책을 가지고
| ProjectId | StartDate | Amount |
|-----------|-----------|--------|
| 1 | 20140926 | 0.6 |
| 1 | 20141001 | 0.83 |
| 2 | 20141001 | 0.55 |
,하지만 난 그게 최적의 확실하지 않다 :
var results = dbContext.ProjectValues
.GroupBy(pv =>
new
{
ProjectId = pv.ProjectId,
Year = pv.StartDate.Year,
Month = pv.StartDate.Month,
})
.Select(g =>
new
{
ProjectId = g.Key.ProjectId,
StartDate = g.Min(v => v.StartDate),
Amount = g.Average(v => v.Amount)
})
.ToList();
SQL 코드 맞습니다, 나는 linq - to - entities를 사용하는 솔루션을 원합니다. – kjv
@kjv, 알겠습니다. 나는 linq-to-entities 전문가가 아니다. – radar