代码如下:
private IQueryable<TSearchResultItem> Search(bool flag)
{
var index = ContentSearchManager.GetIndex(Index);
var ctx = index.CreateSearchContext(SearchSecurityOptions.EnableSecurityCheck);
var items = ctx.GetQueryable<TSearchResultItem>();
var search = HttpContext.Current.Request[SearchTxtParameter];
if (!string.IsNullOrEmpty(search))
{
var predicate = PredicateBuilder.True<LookbookSearchResultItem>();
predicate = predicate.And(x => x.Contributors != null);
return items.Filter(predicate);
}
return items;
}
问题出在这一行:
return items.Filter(predicate);
错误:
Error CS0411 The type arguments for method 'QueryableExtensions.Filter<TSource>(IQueryable<TSource>, Expression<Func<TSource, bool>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
如何克服它?
答案 0 :(得分:0)
您的问题是,您传递给Filter
扩展方法的谓词需要TSource
(即LookbookSearchResultItem
)与TSource
不同(即{ {1}}方法预期{1}}。
由于您没有明确指定TSearchResultItem
方法所需的类型,因此编译器会混淆考虑Filter
或Filter
的类型,这就是为什么你得到这个错误。