我需要能够根据某些条件在我的Bool查询中添加不同的查询类型,但我无法弄清楚如何执行此操作,因为Must()
函数要求params QueryContainer[] queries
例如,这是我可以做的事情:
desc.Query(qq => qq.Bool(qqq => qqq.Must(m => m.Range(r => r.OnField("lastModified").GreaterOrEquals("from").LowerOrEquals("to")), s => s.Prefix(p => p.OnField("test").Value("query")))));
正如您所见,Range
查询和Prefix
查询在此处一起使用,但在Must
方法中以逗号分隔。我需要能够做更多的事情:
List<QueryContainer> queryList = new List<QueryContainer>();
// Range
if (searchTypes.Contains(5)) {
QueryDescriptor<BackupEntitySearchDocument> qd = new QueryDescriptor<BackupEntitySearchDocument>();
qd.Range(r => r.OnField("lastModified").GreaterOrEquals("from").LowerOrEquals("to"));
queryList.Add(qd);
}
/// A couple other query types may be added to queryList here
desc.Query(qq => qq.Bool(b => b.Must(queryList)));
然后能够检查多个其他条件并将其添加到queryList
列表中。
这有意义吗?我有什么想法可以获得这个功能吗?
答案 0 :(得分:1)
您只需要在must:
中的queryList中添加.ToArray()desc.Query(qq => qq.Bool(b => b.Must(queryList.ToArray())));