我有 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。
我不明白為什么不能翻譯。
我該如何解決這個問題?
uj5u.com熱心網友回復:
EF Core 6 必須支持此類查詢,但看起來完整的實作支持已移至 EF Core 7
對話后看起來不需要從資料庫中獲取分組記錄,而只需分組鍵和計數
var latestAnswers = await _dbContext.TextAnswers
.Where(x => x.CompanySurvey.Survey.FiscalYear == 2022)
.GroupBy(x => x.Answer)
.Select(g => new { Answer = g.Key, Count = g.Count() })
.OrderByDescending(x => x.Count)
.Take(15)
.ToListAsync();
uj5u.com熱心網友回復:
我像這樣重寫我的代碼
var latestAnswersQuery = await _dbContext.TextAnswers
.Include(x => x.CompanySurvey).ThenInclude(x => x.Survey)
.Where(x => x.CompanySurvey.Survey.FiscalYear == 2022)
.ToListAsync();
var latestAnswers = latestAnswersQuery.GroupBy(x => x.Answer).OrderByDescending(g => g.Count()).Take(15);
return latestAnswers;
現在一切都很好
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/424690.html
上一篇:ASP.net(按鈕)
