[英]ASP.NET Core Web API - System.InvalidOperationException: The LINQ expression 'DbSet<Mandate>()
In ASP.NET Core-6 Web API Project I have this code:在 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();
}
I got this error:我收到此错误:
System.InvalidOperationException: The LINQ expression 'DbSet().Where(x => x.MerchantId == __merchantId_0).GroupBy(x => x.DrAccountNumber)' could not be translated.
System.InvalidOperationException:无法翻译 LINQ 表达式“DbSet().Where(x => x.MerchantId == __merchantId_0).GroupBy(x => x.DrAccountNumber)”。 Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'.
以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。
As stated in the error, already I have ToListAsync()
如错误中所述,我已经有
ToListAsync()
How do I get this resolved?我该如何解决这个问题?
Thanks谢谢
Instead of executing two queries, everything can be written in one query, which will be more effective.不是执行两个查询,而是可以将所有内容写在一个查询中,这样会更有效。
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.