У меня есть сайт ASP.NET MVC (который использует Linq To Sql для ORM) и ситуацию, когда клиент хочет средство поиска против базы данных на заказ, посредством которой они могут выбрать либо выполнить поиск "И" (все критерии совпадение) или поиск по "OR" (любое соответствие критериям). Запрос довольно сложный и длинный, и я хочу знать, есть ли простой способ заставить его сделать это без необходимости создавать и поддерживать две разные версии запроса.
Например, текущий поиск "И" выглядит примерно так (но это значительно упрощенная версия):
private IQueryable<SampleListDto> GetSampleSearchQuery(SamplesCriteria criteria)
{
var results = from r in Table where
(r.Id == criteria.SampleId) &&
(r.Status.SampleStatusId == criteria.SampleStatusId) &&
(r.Job.JobNumber.StartsWith(criteria.JobNumber)) &&
(r.Description.Contains(criteria.Description))
select r;
}
Я мог бы скопировать это и заменить && с || операторов, чтобы получить версию "OR", но чувствуйте, что должен быть лучший способ достичь этого. Есть ли у кого-нибудь предложения, как это можно достичь эффективным и гибким способом, который легко поддерживать? Спасибо.