Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将任意类型的IQueryable发送到常规方法_Asp.net Mvc_Entity Framework_Iqueryable - Fatal编程技术网

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);