在 ASP.NET Core-6 Web API 專案中,我有以下代碼:
private async Task<int> GetTotalCustomers()
{
var userName = _currentUserService.UserName;
var merchantId = _dbContext.Merchants
.Where(u => u.User.UserName == userName)
.Select(m => m.Id)
.FirstOrDefault();
var customersList = await _dbContext.Mandates
.Where(x => x.MerchantId == merchantId)
.GroupBy(x => x.DrAccountNumber)
.ToListAsync();
return customersList.Count();
}
我收到了這個錯誤:
System.InvalidOperationException:無法翻譯 LINQ 運算式 'DbSet() .Where(x => x.MerchantId == __merchantId_0) .GroupBy(x => x.DrAccountNumber)'。以可翻譯的形式重寫查詢,或通過插入對“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的呼叫顯式切換到客戶端評估。
如錯誤中所述,我已經有了ToListAsync()
我該如何解決這個問題?
謝謝
uj5u.com熱心網友回復:
不用執行兩個查詢,一切都可以寫在一個查詢中,這樣會更有效。
private Task<int> GetTotalCustomers()
{
var userName = _currentUserService.UserName;
var query =
from m in _dbContext.Merchants.Where(m => m.User.UserName == userName)
from mandate in _dbContext.Mandates.Where(mandate => mandate.MerchantId == m.Id)
select x.DrAccountNumber;
return query.Distinct().CountAsync();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511755.html
