【发布时间】:2015-06-15 04:34:35
【问题描述】:
我正在尝试创建一种方法来处理某个查询。我按照 Nest repository(第 60 行)上发布的示例进行操作,但编译器仍然无法识别 MatchAll,如果我尝试构建解决方案,则显示的错误是:
运算符'??'不能应用于 IQueryContainer 类型的操作数和 lambda 表达式
这是我目前的方法:
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")
);
}
【问题讨论】:
-
对于使用操作数 ??,您需要的是查询类型和 (q => q.MatchAll()) 应该相同,因为您提供的是替换IQueryContainer 作为 Lambda,可以填写 Action 或类似的委托,这就是它失败的原因。匹配他们的类型,这样才能成功
标签: c# elasticsearch nest