Я мигрирую с. net ядро 2.2 на 3.0 и получаю ошибку для запроса linq
var accountList = someOtherList.Select(x => x.AccountNo).ToList();
var collectedAmount = await _dbContext.AllocPayments
.Where(p => accountList.Contains(p.AccountNo))
.SumAsync(x => x.Amount);
Это дает ошибку:
System.InvalidOperationException: LINQ Выражение «DbSet .Where (a => __accountList_0.Contains (a.AccountNo)) .Sum (a => a.Amount)» не может быть переведено. Либо переписать запрос в форме, которую можно перевести, либо явно переключиться на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c (). См. https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации.
Я прочитал документацию и могу заставить ее работать, добавив .ToListAsync()
и оценив ее в client/.net
, но тогда почему это не получается? запрос оценивается на server/sql server
?