У меня есть следующий общий запрос (который уже может быть применен):
IQueryable<TEntity> queryable = DBSet<TEntity>.AsQueryable();
Тогда существует класс Provider, который выглядит следующим образом:
public class Provider<TEntity>
{
public Expression<Func<TEntity, bool>> Condition { get; set; }
[...]
}
Condition может быть определен для каждого экземпляра следующим образом:
Condition = entity => entity.Id == 3;
Теперь я хочу выбрать все экземпляры Provider, у которых есть Condition, который встречается хотя бы одним объектом DBSet:
List<Provider> providers = [...];
var matchingProviders = providers.Where(provider => queryable.Any(provider.Condition))
Проблема с этим: я запускаю запрос для каждого экземпляра Provider в списке. Я бы предпочел использовать один запрос для достижения того же результата. Эта тема особенно важна из-за сомнительной производительности. Как добиться одинаковых результатов с помощью одного запроса и повысить производительность с помощью операторов Linq или Expression Trees?