LINQ to Entities无法识别方法 - 子查询计数

时间:2018-01-19 16:08:59

标签: c# entity-framework entity-framework-6 subquery

您好以前曾问过这个问题,但我很难找到符合我问题的答案(错误很多)。

这看起来很相似,但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尽可能高效。 如果不可能 - 那就没关系 - 其中之一。

0 个答案:

没有答案