Невозможно вернуть анонимный тип - PullRequest
0 голосов
/ 17 июня 2011

У меня есть следующая функция с , возвращающая анонимный тип .

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> ...

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Ниже приведены решения:

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 голос
/ 17 июня 2011

Если вам нужен какой-то тип здесь, вы можете создать класс или структуру с именем


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)

В любом случае, это грубая идея ... при условии, что вы хотите вернуть тип (который я бы предпочел «возразить» - тогда нет никаких догадок и он строго типизирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...