반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발꿈나무

[Linq] GROUP BY - Week of YEAR (주별 group by) 2 - Monday To Sunday 본문

C#/LINQ

[Linq] GROUP BY - Week of YEAR (주별 group by) 2 - Monday To Sunday

HYOKYE0NG 2021. 12. 7. 08:22
반응형
 

[Linq] GROUP BY - Week of YEAR (주별 group by)

Blazor에서 수정날짜 데이터를 이용하여 주별로 group by를 수행해야 한다. 또한 현재 날짜를 기준으로 하여 1년 전부터 총 52주의 데이터가 나오도록 lotation을 돌려야 한다. 즉, 1년전의 오늘부터 1주

hyokye0ng.tistory.com

저번에 Linq에서 주별로 GROUP BY 하는 포스팅을 했었다.

예전 포스팅은 오늘 날짜를 기준으로 요일을 따지지 않고,

그냥 7일씩 끊어 GROUP BY를 수행하였다.

 

 

이번에는 월요일부터 일요일까지를 한 주로 보고 GROUP BY를 수행했다.

오늘부터 1년 전의 날짜를 startDate로 저장하고

startDate가 월요일이 아니라면 하루씩 빼서 월요일이 되도록 했다.

 

즉, startDate에서 가장 가까운 월요일을 startDate로 하여

MODIFIED_DATE에서 startDate를 뺀 날짜를 7로 나누어

주별로 Group by를 수행했다.

public DateTime startDate = DateTime.Today.AddYears(-1);

private List<DateDcn> DcnGroupbyQuery(IEnumerable<W_DCN> dcns)
{
    while (startDate.DayOfWeek != DayOfWeek.Monday)
    {
        startDate = startDate.AddDays(-1);
    }
    var query = (from dcn in dcns.Where(f => Convert.ToInt32(f.MODIFIED_DATE.ToString("yyyyMMdd")) > Convert.ToInt32(startDate.ToString("yyyyMMdd")))
                    group dcn by ((dcn.MODIFIED_DATE.Date - startDate).Days / 7) into grp
                    select new DateDcn
                    {
                        Week_No = grp.Key.ToString(),
                        Cnt = grp.Count(),
                        Dcn = grp
                    }).ToList();

    return query;
}
반응형

'C# > LINQ' 카테고리의 다른 글

[Linq] GROUP BY - Week of YEAR (주별 group by)  (0) 2021.12.01
[Linq] - Group by + Join (+ Case when~ then)  (0) 2021.11.10
[Linq] - Join  (0) 2021.11.09
[Linq] - Group by  (0) 2021.11.08
Comments