Asp.net mvc 展开iQueryEnable以使用自定义linq扩展
为了使用以下内容,我添加了一些Linq扩展,基本上是:Asp.net mvc 展开iQueryEnable以使用自定义linq扩展,asp.net-mvc,linq,mvcjqgrid,Asp.net Mvc,Linq,Mvcjqgrid,为了使用以下内容,我添加了一些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&g
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非常相关,所以我试图创建一个ijqQuyEnter,扩展IQueReable,然后这两个将是类似的:
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类型
希望我说得很清楚,如果有任何想法,我都会很感激
谢谢将扩展方法放在名称空间中,然后使用MyApplication.IQueryableExtensions声明名称空间;只有当你需要使用这些扩展时。谢谢克里斯托弗,现在对我来说有意义了