asp.net MVC - LINQ 查询顺序帮助



以下操作方法将 json 数据返回到我的 jqGrid,如本文中所述:
using-jquery-grid-with-asp.net-mvc

我的问题基于这个 LINQ 查询:

    var data = (
    from job in jobs
    select new
    {
      id = job.Id,
      cell = new List<string>() { job.Industry, job.OccupationName }
    }).ToArray();

为什么单元格列表条目未按预期排序?(行业后跟职业名称):

我的期望是:


{"total":1400,"page":1,"records":7000,
"rows":[
{"id":"1","cell":{"Industry":"IT","OccupationName":"Administrator"}},
{"id":"2","cell":{"Industry":"IT","OccupationName":"Developer"}},
{"id":"4","cell":{"Industry":"IT","OccupationName":"Programmer"}}
]}

我得到的是:


{"total":1400,"page":1,"records":7000,
"rows":[
{"id":"1","cell":{"Industry":"IT","OccupationName":"Administrator"}},
{"id":"2","cell":{"Industry":"Developer","OccupationName":"IT"}},
{"id":"4","cell":{"Industry":"IT","OccupationName":"Programmer"}}
]}

感谢您的任何建议!

为清楚起见,整个操作方法:

    public ActionResult OccupationList(string sidx, string sord, int page, int rows)
    {
        using (var context = Service.EF.GetContext())
        {
            int pageIndex = Convert.ToInt32(page) - 1;
            int pageSize = rows;
            int totalRecords = context.sOccupations.Count();
            int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
            sidx = "it.[" + sidx + "]";
            var jobs = context.sOccupations
                .OrderBy(sidx + " " + sord)
                .Skip(pageIndex * pageSize)
                .Take(pageSize);
            var data = (
                  from job in jobs
                  select new
                  {
                      id = job.Id,
                      cell = new List<string>() { job.Industry, job.OccupationName }
                  }).ToArray();
            var jsonData = new
            {
                total = totalPages,
                page = page,
                records = totalRecords,
                rows = data
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }
    }  

我目前的解决方案是一个经典的foreach语句-但我仍然想知道如何将其表达为 linq 查询

    IList<JsonRow> data = new List<JsonRow>();
    JsonRow jsonRow;
    foreach (var item in jobs)
    {
        jsonRow = new JsonRow();
        jsonRow.id = item.Id;
        jsonRow.cell = new string[2] { item.Industry, item.OccupationName };
        data.Add(jsonRow);
    }
    class JsonRow
    {
        public Guid id { get; set; }
        public string[] cell { get; set; }
    }

您必须根据需要对"单元格"进行排序。

 var data = (
        from job in jobs
orderby job.OccupationName
        select new
        {
          id = job.Id,
          cell = new List<string>() { job.Industry, job.OccupationName }
        }).ToArray();

您必须检查语法,因为我尚未尝试运行它。编辑:我试过这个,它应该可以工作。

相关内容

  • 没有找到相关文章

最新更新