在MVC JqGrid之后使用this tutorial我正在添加一些Linq扩展,基本上是这些:
public static IQueryable<T> OrderBy<T>(this IQueryable<T> query, string sortColumn, string direction)
{
//...
return query.Provider.CreateQuery<T>(result);
}
public static IQueryable<T> Where<T>(this IQueryable<T> query,
string column, object value, WhereOperation operation)
{
//....
return query.Provider.CreateQuery<T>(result);
}
事实是,我不喜欢让任何查询可以访问这些扩展方法的想法,因为我认为它们与JqGrid非常相关所以我试图创建一个扩展IQueryable的IJqQueryable然后这两个会是这样的:
public static IJqQueryable<T> OrderBy<T>(this IJqQueryable<T> query, string sortColumn, string direction)
{
//Same code as before
var normalQuery = query.Provider.CreateQuery<T>(result);
return normalQuery as IJqQueryable<T>;
}
public static IJqQueryable<T> Where<T>(this IJqQueryable<T> query,
string column, object value, WhereOperation operation)
{
//Same code as before
var normalQuery = query.Provider.CreateQuery<T>(result);
return normalQuery as IJqQueryable<T>;
}
为此,我只创建了这个界面:
public interface IJqQueryable<T> : IQueryable<T>
{
}
现在我的问题是我需要等同于AsQueryable()因为我的控制器动作方法看起来像(在更改之前使用IJqQueryable)
public JsonResult ComplaintTypes(GridSettings grid)
{
var complaintTypes = _queryComplaintTypes.GetAll();
Func<ComplaintType, Object> lambda = (complaintType => (new {
complaintType.ComplaintDescription,
complaintType.ComplaintTypeId
}));
var result = _jqGridFactory.Get(grid, complaintTypes.AsQueryable(), lambda);
return Json(result, JsonRequestBehavior.AllowGet);
}
显然我不能将其用作IJqQueryable或将其转换为(IJqQueryable)complaintTypes。
希望我说得相当清楚,会欣赏任何想法
由于