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;
        }