2011-06-17 89 views
0

我有以下功能返回匿名類型無法返回匿名類型

public IQueryable<TabMasterViewModel> GetJsonTabMasterList(string OrderByColumn, string OrderType, int PageSize, int CurrentPage) 
     { 
      IQueryable<TabMaster> tabmasters = _tabmasterRepository.GetQueryable().OrderUsingSortExpression(OrderByColumn + " " + OrderType).Skip((CurrentPage - 1) * PageSize).Take(PageSize); 
      var jsonData = new 
      { 
       total = 1,//totalPages, 
       page = 1,//page, 
       records = 14, //totalRecords, 
       rows = (from tm in tabmasters 
         select new 
         { 
          id = tm.colID, 
          cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName } 
         }).ToArray() 
      }; 
      return jsonData; 
     } 

但它給了我一個下列錯誤: 無法隱式轉換類型「AnonymousType#1」 「System.Linq.IQueryable」

我在定義返回類型功能混亂下面一行

public IQueryable<TabMasterViewModel> ... 
+0

改變你的返回類型爲'object'。 – Eranga 2011-06-17 05:30:12

+0

**,但現在我得到新的錯誤:** LINQ to Entities無法識別方法'System.String ToString()'方法,並且此方法無法轉換爲存儲表達式。在以下行cell = new string [] {tm.colID.ToString(),tm.FirstName,tm.LastName} – imdadhusen 2011-06-17 05:45:10

+0

首先,您必須檢查您的LINQ查詢是否正常工作。嘗試用'tm.colID'替換'tm.colID.ToString()'。 – Eranga 2011-06-17 05:49:36

回答

1

以下是解決方案:

public JsonResult GetGridData(string sidx, string sord, int rows, int page) 
     { 
      int totalRecords = Convert.ToInt32(_tabmasterService.Count()); 
      int totalPages = (int)Math.Ceiling((float)totalRecords/(float)rows); 
      IQueryable<TabMasterViewModel> tabmasters = _tabmasterService.GetQueryTabMasterList(sidx, sord, rows, page); 
      var jsonData = new 
      { 
       total = totalPages, 
       page = page, 
       records = totalRecords, 
       rows = (from tm in tabmasters 
         select new 
         { 
          id = tm.colID, 
          cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName } 
         }).ToArray() 
      }; 
      return Json(jsonData, JsonRequestBehavior.AllowGet); 
     } 
1

如果你需要某種類型的在這裏,你可以創建一個名爲類或結構

 

public class TabMasterDataInfo 
{ 
public int Total {get;set;} 
public int Page {get;set;} 
public int Records {get;set;} 
public IEnumerable Rows {get;set;} 
} 
 

然後

 

var jsonData = new TabMasterDataInfo() 
      { 
       Total = 1,//totalPages, 
       Page = 1,//page, 
       Records = 14, //totalRecords, 
       Rows = (from tm in tabmasters 
         select new 
         { 
          id = tm.colID, 
          cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName } 
         }).ToArray() 
      }; 
 

和你的方法返回然後鍵入TabMasterDataInfo

 
public TabMasterDataInfo GetJsonTabMasterList(string OrderByColumn, string OrderType, int PageSize, int CurrentPage) 

這是粗略的想法反正..假設你想有一個類型的回報(我會遠遠寧願「對象' - 那麼就沒有猜測,而且它的強類型。

+0

感謝您的回覆。我根據你的更新代碼,但仍然問題持續存在以下錯誤:LINQ to Entities不能識別方法'System.String ToString()'方法,並且此方法不能轉換爲存儲表達式。 – imdadhusen 2011-06-17 06:06:58

+0

使用Convert.ToString(tm.colID)代替tm.colID.ToString()。 Linq不喜歡.ToString()那裏。 – jani 2011-06-17 08:36:09

+0

我試過但都解決不了! – imdadhusen 2011-06-17 10:04:03