2013-10-23 24 views
0

這裏是「源不是IEnumerable的<>」 錯誤使用SqlQuery類時(類型,串,對象[])。AsQueryable已()

我正在執行在控制器原始的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中查詢的結果,當我使用

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

,但是當我像計數我得到的誤差

應用AsQueryable已給它的操作時,

源不是IEnumerable的<>

請幫助,而不是解決這個

+0

什麼是查詢? – MikeSW

+0

什麼是返回類型的ctx.Database.SqlQuery(obj.GetType(),查詢,參數) – Patel

+0

查詢是一般選擇語句說select * from DemoTable – abc123

回答

2

轉換QueryResult中以IQueryable的,使它通用:

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

IEnumerable<T>(在你的情況IEnumerable<object>,因爲你不在編譯時不知道哪種類型)將允許你執行許多操作。

+0

它的工作... :)除了你的代碼,我只是將動態queryresult更改爲IEnumerable queryresult並獲取計數var count = queryresult.AsQueryable.Count(); – abc123

相關問題