나는 날짜 / 시간 필드의 날짜 부분에서 Linq 그룹을 수행하려고합니다.
이 linq 문은 작동하지만 날짜와 시간별로 그룹화됩니다.
var myQuery = from p in dbContext.Trends
group p by p.UpdateDateTime into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
그룹화 할 때이 문을 실행할 때 다음과 같은 오류가 발생합니다.
var myQuery = from p in dbContext.Trends
group p by p.UpdateDateTime.Date into g //Added .Date on this line
select new { k = g.Key, ud = g.Max(p => p.Amount) };
지정한 형식 멤버 'Date'는 LINQ to Entities에서 지원되지 않습니다. 이니셜 라이저, 엔티티 구성원 및 엔티티 탐색 특성 만 지원됩니다.
날짜와 시간이 아닌 그룹별로 어떻게 그룹을 만들 수 있습니까?
사용EntityFunctions.TruncateTime방법:
var myQuery = from p in dbContext.Trends
group p by EntityFunctions.TruncateTime(p.UpdateDateTime) into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
가능한 해결책이리이것은 패턴을 따른다.
var q = from i in ABD.Listitem
let dt = p.EffectiveDate
group i by new { y = dt.Year, m = dt.Month, d = dt.Day} into g
select g;
따라서 귀하의 질의 [untested]에 대해 :
var myQuery = from p in dbContext.Trends
let updateDate = p.UpdateDateTime
group p by new { y = updateDate.Year, m = updateDate.Month, d = updateDate.Day} into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
사용할 수 없습니다.DateTime.Date
Linq-to-Entities 쿼리에서. 입력란을 명시 적으로 그룹화하거나Date
필드에 표시됩니다. (나는 같은 문제를 겪었다.Date
db의 필드, 결코 뒤돌아 보지 마십시오).