Ваш класс Wh независимо имеет свойство IsSoftDeleted, поэтому фильтровать нечего. Я собираюсь предположить, что бы ни происходило от BaseEntity.
Основная проблема в том, что IQueryable . Где-то на самом деле не существует: это метод расширения, а методы расширения не подходят для динамических типов. Если компилятор может видеть, что тип реализует IQueryable , вы можете ввести var.Where (...) и заставить компилятор преобразовать его в System.Linq.Queryable.Where (var, ...). Поскольку тип является динамическим в вашем примере, компилятор не знает, что он реализует IQueryable, и сообщит об ошибке, когда вы попытаетесь вызвать Where.
Вы можете привести DbSet к IQueryable (при условии, что у Type есть BaseEntity в качестве базового класса) и вызвать любой фильтр для этого. Вы на самом деле используете функцию динамического типа? Если нет, вы также можете рассмотреть возможность удаления своей пользовательской функции Set и использования функции DbContext.Set по умолчанию.
var query = (from e in (IQueryable<BaseEntity>)dbContext.Set(type)
where e.IsSoftDeleted != true
select e);
Примечание: это , а не то же самое, что и использование dbContext.Set (type) .Cast (): это не сработает, потому что DbSet и DbSet несовместимы Это можно сделать только с помощью IQueryable и других интерфейсов с аргументами типа «out».