Мне нужно создать запрос, который не возвращает значения, если QueryContainer равен нулю.Вот упрощенная версия моей проблемы.У меня есть несколько, если это проверить, если мои аргументы nullOrEmpty и если значение является действительным, я добавляю QueryContainer в запросе
код, который запускает поиск:
var searchResponse = client.Search<ClientTaskModel>(s => s.Index(new[] { config.ClientIndexName })
.From(args.Index)
.Size(args.Count)
.Query(fp => FilterTask(fp, args)));
Функциякоторые создают QueryContainer для поиска
private QueryContainer FilterTask(QueryContainerDescriptor<ClientTaskModel> container, GetSimilarClientsTaskArgs args)
{
QueryContainer fieldQuery = null;
if (!string.IsNullOrWhiteSpace(args.Sin))
{
fieldQuery |= container.Match(g => g.Field(f => f.Sin).Query(args.Sin).Verbatim());
}
if (!string.IsNullOrWhiteSpace(args.Email))
{
fieldQuery |= container.Match(g => g.Field(f => f.Email).Query(args.Email).Verbatim());
}
return !container.Match(g => g.Query(args.ClientId.ToString()).Field(f => f.ClientId).Verbatim()) &&
container.Terms(t => t.Field(f => f.ClientType).Terms(compareType) && fieldQuery
}
Проблема заключается в том, что SIN и электронная почта имеют значение nullOrEmpty, fieldQuery завершается нулевым значением, и запрос проверяет только соответствие ClientId и ClientType, но мне нужноне вернуть результат в этой ситуации.