【发布时间】:2022-02-15 18:58:31
【问题描述】:
我有 LINQ 表达式来获取前 15 个最常用的答案
这是表达式
var latestAnswers = await _dbContext.TextAnswers.Include(x => x.CompanySurvey).ThenInclude(x => x.Survey)
.Where(x => x.CompanySurvey.Survey.FiscalYear == 2022)
.GroupBy(x => x.Answer)
.OrderByDescending(g => g.Count())
.Take(15)
.ToListAsync();
但我得到了这个错误
LINQ 表达式 'DbSet() .Include(x => x.CompanySurvey) .ThenInclude(x => x.Survey) .Where(x => x.CompanySurvey.Survey.FiscalYear == (int?)2022 ) .GroupBy(x => x.Answer) .OrderByDescending(g => g .AsQueryable() .Count()) .Take(__p_0)' 无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。请参阅https://go.microsoft.com/fwlink/?linkid=2101038 了解更多信息。
我不明白为什么不能翻译。
我该如何解决这个问题?
【问题讨论】:
-
EF Core 哪个版本?不要忘记指定。 EF Core 6 支持此类查询。
-
我看到项目使用 Z.EntityFramework.Plus.EfCore 包 - 6.13.7 @SvyatoslavDanyliv
-
Z 项目不是 EF Core,它只是扩展。
-
所以 EFCore 6.0.0 在项目@SvyatoslavDanyliv 中使用
-
您是否尝试删除
Includes?还是最后需要相关数据?
标签: c# asp.net linq asp.net-core