我有一个函数在基于布尔型标志的时间间隔内搜索文档,NEST查询将使用不同的LessThanOrEqual in if statment and 在else语句中使用的是。如何在NEST C中编写动态弹性搜索查询#
public IEnumerable<Book> GetBooks(DateTime startTime, DateTime endTime, string author, bool includeEnd)
{
var readRecords;
if (includeEnd){
readRecords = elastic.Search<Book>(s => s.Index(IndexName)
.Query(q => q.Term(book => book.Author, author) &&
q.DateRange(i => i.Field(book => book.Author)
.GreaterThanOrEquals(startTime)
.LessThanOrEquals(endTime)))).Documents.ToArray();
}
else{
readRecords = elastic.Search<Book>(s => s.Index(IndexName)
.Query(q => q.Term(book => book.Author, author) &&
q.DateRange(i => i.Field(book => book.Author)
.GreaterThanOrEquals(startTime)
.LessThan(endTime)))).Documents.ToArray();
}
return readRecords;
}
如何使这个NEST查询动态使用布尔标志“includeEnd”,以便我不需要使用if语句?
请注意,在if语句中,日期范围查询包含结束时间(通过在NEST查询中使用“LessThanOrEqual”),否则语句通过在NEST查询中仅使用LessThan来排除结束时间。 –