Asp.net mvc 将任意类型的IQueryable发送到常规方法
问题是:我正在尝试创建一个通用方法,该方法将接受一个Asp.net mvc 将任意类型的IQueryable发送到常规方法,asp.net-mvc,entity-framework,iqueryable,Asp.net Mvc,Entity Framework,Iqueryable,问题是:我正在尝试创建一个通用方法,该方法将接受一个IQueryable,它可以是许多不同类型的数据,包括自定义数据。在这个方法中,我将根据传入的IQueryable类型进行排序 我正在使用以下内容创建一个自定义类: public class sortObject { public String OrderParam { get; set; } public int pageSize { get; set; } public int pageInd
IQueryable
,它可以是许多不同类型的数据,包括自定义数据。在这个方法中,我将根据传入的IQueryable
类型进行排序
我正在使用以下内容创建一个自定义类:
public class sortObject
{
public String OrderParam { get; set; }
public int pageSize { get; set; }
public int pageIndex { get; set; }//This is what page the user is on
public IQueryable<dynamic> entity { get; set; }
}
so.entity
将是IQueryable
,但在对象的基本部分(调试时)将是userAccount类型。我需要数据库中的数据以便运行搜索
我的问题是直到运行时我才知道IQueryable
类型是什么,因为这是一种通用方法。它可以是user类型,也可以是address类型等,但是排序仍然有效,因为我将在sortObject中传递我想要排序的内容
如何在运行时获取基本数据或转换IQueryable
类型
我发现这在排序表方法中有效:
var entity = so.entity.AsQueryable().OrderBy("UserName");
var data = entity.Skip(so.pageSize*(so.pageIndex-1)).Take(so.pageSize);
我想你想要的是一个涉及泛型的解决方案——试试看
public class sortObject<T>
{
public String OrderParam { get; set; }
public int pageSize { get; set; }
public int pageIndex { get; set; }//This is what page the user is on
public IQueryable<T> entity { get; set; }
}
你可以打电话
sortObject so = new sortObject<userAccount>();
so.entity = _context.userAcount.Select(x=>x);
DoSomething(so);
sortObject so=new sortObject();
so.entity=\u context.userAcount.Select(x=>x);
DoSomething(so);
这非常有效,我还添加了一些我想到的东西。
public void DoSomething<T>(sortObject<T> input)
{
// input.entity is now of type T
}
sortObject so = new sortObject<userAccount>();
so.entity = _context.userAcount.Select(x=>x);
DoSomething(so);