我需要能够根据某些条件将不同的查询类型添加到我的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列表中的多个其他条件。

那有意义吗?关于如何获得此功能的任何想法?

最佳答案

您只需要在必须的queryList中添加.ToArray()即可:

desc.Query(qq => qq.Bool(b => b.Must(queryList.ToArray())));

10-06 03:44