0

这是问题

我在控制器中执行原始 sql 查询

var ctx=new DBModel();

public ActionResult Grid(string tbname,string query,object args)
{
   var obj = Activator.CreateInstance(Assembly.GetExecutingAssembly().GetType("Demo.Models." + tbname));
   dynamic queryresult;
   queryresult=ctx.Database.SqlQuery(obj.GetType(),query,args).AsQueryable();
}

我在使用时在查询结果中得到查询结果

queryresult=ctx.Database.SqlQuery(obj.GetType(),query,args);

但是当我将 AsQueryable 应用于 Count 之类的操作时,我得到的错误是

源不是 IEnumerable<>

请帮助解决这个问题

4

1 回答 1

2

与其将 queryresult 转换为IQueryable,不如将其设为通用:

queryresult = ctx.Database.SqlQuery(obj.GetType(),query,args).Cast<object>();
var count = queryresult.Count();

IEnumerable<T>(在您的情况下IEnumerable<object>,因为您在编译时不知道哪种类型)将允许您执行许多操作。

于 2013-10-23T07:29:19.897 回答