gpt4 book ai didi

c# - 无法从用法中推断出类型参数

转载 作者:行者123 更新时间:2023-11-30 14:04:37 25 4
gpt4 key购买 nike

我对泛型还很陌生,所以我想知道是否有人可以解释我遇到的以下问题。在 ASP.NET MVC 应用程序的几乎所有 Controller 中,我需要返回一个过滤列表(以填充 JqGrid,因为它发生在用户将指定某些过滤条件的地方)。每个 Controller 列表方法将返回一个不同的 IQueryable 列表,因此我着手创建一个通用方法来处理这个问题。

当我创建我的方法时,我在一个特定的 Controller 中定义了它。一切都编译好了,我得到了我预期的结果。因为我想从我的所有 Controller 调用此方法,所以我假设我可以简单地创建另一个静态类,将方法放在那里,然后从我的所有 Controller 调用该方法。但是如果我尝试将该方法移动到调用它的 Controller 以外的任何其他地方,编译器会提示该方法的最后一行并出现以下错误:

方法的类型参数 System.Linq.Queryable.Where<TSource>(System.Linq.IQueryable<TSource>,
System.Linq.Expressions.Expression<System.Func<TSource,bool>>)
不能从用法中推断出来。尝试明确指定类型参数。

public static IQueryable<T> FilteredList<T>(IQueryable<T> list, string filters)
{
var qb = new QueryBuilder<T>();
var whereClause = qb.BuildWhereClause(filters);
return list.Where(whereClause);
}

我试过了 list<T>.Where(whereClause)list.Where<T>(whereClause)以及几乎所有其他组合,任何人都可以向我解释我哪里出错了。

最佳答案

这表明您的 BuildWhereClause方法未返回适当的类型。

编译器正在尝试推断 TSource 的类型来自 listwhereClause .现在whereClause 应该Expression<Func<T, bool>>但我怀疑不是。将鼠标悬停在 var 上在 whereClause 的声明中找出它到底是什么。我不推荐使用 var当返回类型不明显时。

关于c# - 无法从用法中推断出类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com