Привет! У меня есть два экспрешена с условиями, которые я хочу объединить в один экспрешен и скормить в Entity Framework Core.
Expression<Func<Device, bool>> deviceTypeFilter = d => d.DeviceTypes == DeviceTypes.Camera;
Expression<Func<Device, bool>> geolocationFilter = d => d.Latitude == 23.2;
var finalCriteria = Expression.AndAlso(deviceTypeFilter.Body, geolocationFilter.Body);
var lambda = Expression.Lambda<Func<Device, bool>>(finalCriteria, Expression.Parameter(typeof(Device)));
IQueryable<Device> query = this.Entities;
query = lambda != null ? query.Where(lambda) : query;
return await query.AsNoTracking().ToListAsync();
Но у меня этот код не работает. Падает с ошибкой:
'The LINQ expression 'DbSet
.Where(d => (int)d.DeviceTypes == 1 && d.Latitude == 23,2)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.'
Если передавать экспрешены по отдельности, то всё работает. Значит я как-то не правильно объединяют эти экспрешены? В чём может быть ошибка?