您好以前曾问过这个问题,但我很难找到符合我问题的答案(错误很多)。
这看起来很相似,但4年前有任何进展。 LINQ to Entities does not recognize the method 'Int32
基本上我想移动一个子查询,它将一个计数返回一个函数,无论如何这里是代码。
vm.SicknessEpisodes = _db.SicknessEpisodes.Where(x => x.Status == true && x.LastDay == null).OrderByDescending(x => x.FirstDay).
Select(x => new HomeSicknessEpisode
{
SicknessEpisode = x,
EpisodesIn12Months = _db.SicknessEpisodes.Where(y => y.StaffID == x.StaffID && y.Status == true &&
(y.LastDay == null || (y.LastDay.HasValue && y.LastDay >= prevDate))).Count()
}).
ToPagedList(p, 100);
这有效
这个
vm.SicknessEpisodes = _db.SicknessEpisodes.Where(x => x.Status == true && x.LastDay == null).OrderByDescending(x => x.FirstDay).
Select(x => new HomeSicknessEpisode
{
SicknessEpisode = x,
EpisodesIn12Months = _db.episodes12Months(x,prevDate).Count()
}).
ToPagedList(p, 100);
public IQueryable<SicknessEpisode> episodes12Months(SicknessEpisode x, DateTime prevDate)
{
return this.SicknessEpisodes.Where(y => y.StaffID == x.StaffID && y.Status == true &&
(y.LastDay == null || (y.LastDay.HasValue && y.LastDay >= prevDate)));
}
没有。
任何人都可以告诉我如何让它发挥作用 - 理想情况下,不要进入列表然后预约每一集来运行计数。
我只是想让Entity Framework尽可能高效。 如果不可能 - 那就没关系 - 其中之一。