我想創建一個方法來處理某個查詢。我按照張貼在鳥巢repository(60行)的例子,但仍MatchAll不被編譯器識別,如果我嘗試構建解決方案,顯示錯誤是:運營商'??'不能應用於類型IQueryContainer和lambda表達式的操作數
操作「?」不能被施加到型IQueryContainer的操作數和λ表達
這是到目前爲止我的方法:
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或類似的委託,這就是它失敗的原因。匹配他們的類型,爲此獲得成功 –