我是相當新的泛型,所以我不知道是否有人可以解釋我遇到以下問題。實際上,在ASP.NET MVC應用程序中的所有控制器中,我需要返回一個過濾列表(以便在用戶將指定某些過濾標準的位置填充JqGrid)。每個控制器列表方法將返回一個不同的IQueryable列表,所以我設置了創建一個通用的方法來處理這個。類型參數不能從使用推斷
當我創建我的方法時,我在特定的控制器中定義了它。一切都編譯完成,我得到了我期望的結果。因爲我想從我所有的控制器中調用此方法,我假設我可以簡單地創建另一個靜態類,將該方法放在那裏,然後從我的所有控制器調用該方法。但是,如果我嘗試的方法轉移到其他地方以外的控制器這就是調用它,編譯器會抱怨的方法有以下錯誤的最後一行:
的方法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)
和幾乎所有其他的組合,我要去哪裏錯了,誰能給我解釋一下。
qb.BuildWhereClause返回什麼?表達式>? –
2009-10-01 16:00:47
你會想'Where Where'應該工作。 –
Joren
2009-10-01 16:07:00
當你使用'Where Where(T)',你得到了什麼錯誤信息(它應該是不同的)?另外,whereClause'的確切實際類型是什麼? –
2009-10-01 16:13:19