2014-07-12 37 views
0

我想在MVC和遠程數據中使用Kendo UI網格。我只想抓取和顯示來自DbSet的onload數據,其中一個字段「狀態」等於「1」。我想這應該是能夠在控制器來完成:在Kendo網格的Read方法中只選擇DbSet的一部分

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Read([DataSourceRequest] DataSourceRequest request) 
{ 
    using (var db = new MyData(false)) 
    { 
     var data = db.Training.Where(d => d.Status == '1').Select(d => new Training { 
      Id = d.Id, 
      Name = d.Name, 
      Status = d.Status 
     }).ToDataSourceResult(request); 

     return Json(data, JsonRequestBehavior.AllowGet); 
    } 
} 

上面的代碼給我說:「實體或複雜類型‘培訓’不能在LINQ到實體查詢構建」的錯誤。有關如何重寫Linq語句的任何建議,以便它可以工作,或者可以在網格內部執行,以禁止任何不具有狀態'1'的任何建議?

回答

2

您的代碼正在嘗試投影到不允許的映射實體。此外,由於您已經擁有實體,因此這樣做是多餘的。請記住,.Select()用於將一種類型映射到另一種類型,但.Where()方法已返回實體列表(Training)。

取出.Select()和查詢應該工作:

var data = db.Training.Where(d => d.Status == '1').ToDataSourceResult(request); 
+0

是的,我才發現,原來,自己是一個小時前!謝謝! – vapcguy