操作员 '??'不能应用于 IQueryContainer 类型的操作数和 lambda 表达式

Operator '??' cannot be applied to operands of type IQueryContainer and lambda expression

我正在尝试创建一种方法来处理某个查询。我按照 Nest repository(第 60 行)上发布的示例进行操作,但编译器仍然无法识别 MatchAll,如果我尝试构建解决方案,显示的错误是:

Operator '??' cannot be applied to operands of type IQueryContainer and lambda expression

到目前为止,这是我的方法:

public void ProcessQuery(IQueryContainer query = null)
{

   var searchResult = this._client.Search<T>(
                s => s
                    .Index(MyIndex)
                    .AllTypes()
                    .From(0)
                    .Take(10)
                    .Query(query ?? (q => q.MatchAll())) // Not valid
                    .SearchType(SearchType.Scan)
                    .Scroll("2m")
                );
}

lambda 表达式的类型可以转换为 Expression 或某种委托类型,但很可能不能转换为 IQueryContainer。 Lambda 表达式本身没有类型,需要自动转换的特定上下文,您可以提供例如通过使用适当的委托类型构造函数。但同样:我不相信 ?? 一侧的接口和另一侧的 lambda 表达式有任何意义。

感谢@Mrinal Kamboj 的评论和@Wormbo 的回答,我找到了自己的答案:
我将参数类型更改为 QueryContainer,如果参数为 null,则会创建一个新的 QueryMatchAll 查询,这对我有用:

public void ProcessQuery(QueryContainer query = null)
{

   var searchResult = this._client.Search<T>(
                s => s
                    .Index(MyIndex)
                    .AllTypes()
                    .From(0)
                    .Take(10)
                    .Query(query ?? new MatchAllQuery()) // Now works
                    .SearchType(SearchType.Scan)
                    .Scroll("2m")
                );
}