public static void ChangeOrder(IEnumerable data, ListOrderItem target, bool increase) { var data2 = data.Cast <ListOrderItem>(); if (increase) { var upper = data2.Where(p => p.OrderNo > target.OrderNo).OrderBy(p => p.OrderNo); if (upper.Any()) { var upperItem = upper.First(); int tempOrder = target.OrderNo; target.OrderNo = upperItem.OrderNo; upperItem.OrderNo = tempOrder; } } else { var lower = data2.Where(p => p.OrderNo < target.OrderNo).OrderByDescending(p => p.OrderNo); if (lower.Any()) { var lowerItem = lower.First(); int tempOrder = target.OrderNo; target.OrderNo = lowerItem.OrderNo; lowerItem.OrderNo = tempOrder; } } }
public static void MoveToBottom(IEnumerable data, ListOrderItem target) { var data2 = data.Cast <ListOrderItem>(); int orderNo = target.OrderNo; foreach (ListOrderItem item in data2.Where(p => p.OrderNo >= target.OrderNo).OrderBy(a => a.OrderNo).ToArray()) { item.OrderNo = orderNo++; } target.OrderNo = orderNo; }