JqGrid ordenable usando LINQ a MySQL (DbLinq) y Dynamic LINQ – Orderby no funciona

Tengo un problema al ordenar las entradas en JqGrid. Orderby parece no funcionar. Establecí el punto de interrupción en el código y noté que orderby no cambia el orden de los elementos. ¿Alguna idea de lo que podría estar mal?

Estoy usando LINQ to SQL con MySQL (proyecto DbLinq).

Mi código de acción:

public ActionResult All(string sidx, string sord, int page, int rows) { var tickets = ZTRepository.GetAllTickets().OrderBy(sidx + " " + sord).ToList(); var rowdata = ( from ticket in tickets select new { i = ticket.ID, cell = new String[] { ticket.ID.ToString(), ticket.Hardware, ticket.Issue, ticket.IssueDetails, ticket.RequestedBy, ticket.AssignedTo, ticket.Priority.ToString(), ticket.State } }).ToArray(); var jsonData = new { total = 1, // we'll implement later page = page, records = tickets.Count(), rows = rowdata }; return Json(jsonData, JsonRequestBehavior.AllowGet); } 

Pruebe con lo siguiente

 public ActionResult All(string sidx, string sord, int page, int rows) { IQueryable repository = ZTRepository.GetAllTickets(); int totalRecords = repository.Count(); // first sorting the data as IQueryable without converting ToList() IQueryable orderdData = repository; System.Reflection.PropertyInfo propertyInfo = typeof(Ticket).GetProperty (sidx); if (propertyInfo != null) { orderdData = String.Compare(sord,"desc",StringComparison.Ordinal) == 0 ? (from x in repository orderby propertyInfo.GetValue (x, null) descending select x) : (from x in repository orderby propertyInfo.GetValue (x, null) select x); } // if you use fields instead of properties, then one can modify the code above // to the following // System.Reflection.FieldInfo fieldInfo = // typeof(Ticket).GetField (sidx); // if (fieldInfo != null) { // orderdData = String.Compare(sord,"desc",StringComparison.Ordinal) == 0 ? // (from x in repository // orderby fieldInfo.GetValue (x, null) descending // select x) : // (from x in repository // orderby fieldInfo.GetValue (x, null) // select x); //} // paging of the results IQueryable pagedData = orderdData .Skip ((page > 0? page - 1: 0) * rows) .Take (rows); // now the select statement with both sorting and paging is prepared // and we can get the data var rowdata = ( from ticket in tickets select new { id = ticket.ID, cell = new String[] { ticket.ID.ToString(), ticket.Hardware, ticket.Issue, ticket.IssueDetails, ticket.RequestedBy, ticket.AssignedTo, ticket.Priority.ToString(), ticket.State } }).ToList(); var jsonData = new { total = page, records = totalRecords, total = (totalRecords + rows - 1) / rows, rows = pagedData }; return Json(jsonData, JsonRequestBehavior.AllowGet); } 

Aquí supongo que el tipo de tu ticket es Ticket .

La variable tickets está ordenada, pero luego la usa como fuente para otra consulta que NO está ordenada, por lo que su orden es indeterminada. Desea el orden en la segunda consulta LINQ.