public ActionResult PolicyOrder(policyData vData, int id, FormCollection collection) { PolicyLinkEntity policyLink = new PolicyLinkEntity(id); PolicyLinkCollection coll = new PolicyLinkCollection(); PredicateExpression pe = new PredicateExpression(PolicyLinkFields.Id != policyLink.Id); pe.Add(PolicyLinkFields.ParentId == policyLink.ParentId); SortExpression se = null; if (collection["up"] != null) { // Find all categories with display index less than ours. pe.Add(PolicyLinkFields.Order <= policyLink.Order); // Order by display index, highest first. se = new SortExpression(PolicyLinkFields.Order | SortOperator.Descending); } else { // Find all categories with display index greater than ours. pe.Add(PolicyLinkFields.Order >= policyLink.Order); // Order by display index, lowest first. se = new SortExpression(PolicyLinkFields.Order | SortOperator.Ascending); } // Swap with closest one. if (coll.GetMulti(pe, 1, se) && coll.Count > 0) { int temp = coll[0].Order; coll[0].Order = policyLink.Order; policyLink.Order = temp; policyLink.Save(); coll.SaveMulti(); } return(RedirectToAction("EditPolicySet", new { id = policyLink.ParentId })); }