linq中不允许使用ToString()或其他扩展方法解决方案
t-jian 时间:2021-12-16
示例:在select中要求转换AddTime转换成year 年 ,由于数据库中存储的是时间戳,所有需要转成datetime 。linq中是没有将方法无法转换为存储表达式的。
需要必须使用AsEnumerable() 才可以。
_articleRepository.OrderByDescending(x => x.AddTime).Skip((input.Page - 1) * input.Page) .Take(input.Limit) .Select(x => new PostBriefDto { Title = x.Title, Id = x.Id, Year = x.AddTime.TryDateTime().Year, CreationTime = x.AddTime.ToString() }).GroupBy(x => x.Year) .Select(x => new QueryPostDto { Year = x.Key, Posts = x.ToList() }).ToList();
使用
_articleRepository.OrderByDescending(x => x.AddTime) .Skip((input.Page - 1) * input.Page).Take(input.Limit) .AsEnumerable() .Select(x => new PostBriefDto{ Title = x.Title, Id = x.Id, Year = x.AddTime.TryDateTime().Year, CreationTime = x.AddTime.ToString() }).GroupBy(x => x.Year) .Select(x => new QueryPostDto{ Year = x.Key, Posts = x.ToList() }).ToList();
特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。