以下操作方法将 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();
您必须检查语法,因为我尚未尝试运行它。编辑:我试过这个,它应该可以工作。