我做错了什么? FYI存储库方法GetResearchArticles()返回IQueryable。
var grouped = (from p in _researchArticleRepository.GetResearchArticles()
group p by new { month = p.DatePublished.Month, year = p.DatePublished.Year } into d
select new
{
dt = d.Key.month + "-" + d.Key.year,
dtByMonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(d.Key.month) + " " + d.Key.year
}//count = d.Count() }
)
.OrderByDescending(g => g.dt);
return grouped.ToDictionary(item => item.dt, item => item.dtByMonthName);
答案 0 :(得分:6)
可能正在尝试将该语句转换为SQL表达式,但它无法做到。您应该对已经从数据库中检索的数据进行调用,而不是尝试在数据库上执行此操作。
基本上,您需要运行.ToList()
或其他东西来强制获取数据,然后拨打GetMonthName()
答案 1 :(得分:2)
既然你没有做任何过滤,这应该有效,但是你将所有的研究文章都归结为内存,因为SQL不懂得如何获得月份
var grouped = (from p in _researchArticleRepository.GetResearchArticles().ToList()
group p by new { month = p.DatePublished.Month, year = p.DatePublished.Year } into d
select new
{
dt = d.Key.month + "-" + d.Key.year,
dtByMonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(d.Key.month) + " " + d.Key.year
}//count = d.Count() }
)
.OrderByDescending(g => g.dt);
return grouped.ToDictionary(item => item.dt, item => item.dtByMonthName);