方法的类型参数...不能从用法中推断出来

时间:2016-07-17 12:39:20

标签: c#

代码如下:

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.

如何克服它?

1 个答案:

答案 0 :(得分:0)

您的问题是,您传递给Filter扩展方法的谓词需要TSource(即LookbookSearchResultItem)与TSource不同(即{ {1}}方法预期{1}}。

由于您没有明确指定TSearchResultItem方法所需的类型,因此编译器会混淆考虑FilterFilter的类型,这就是为什么你得到这个错误。