我正在研究一种可以解决我遇到的问题的算法,但我发现自己有点卡住了。这是场景:
我有一个对象,其中包含一个名为 order 的变量。
public class Item
{
public int Order{get; set;};
public int ID{get; set;}; // not incremented can be any value!
}
所以我有一个清单:
List<Item> list = new List<Item>().OrderBy((o) => o.Order);
并且可以随时更改订单值。因此,如果我想更改第一个项目订单值,则所有其他订单值都应相应更新,以免重复。
for (int i = 0; i <= list .Count - 1; i++)
{
if (list [i].ID == inputID)
{
list [i].Order = inputNewPosition;
}
else
{
if (list [i].Order < inputNewPosition)
{
list [i].Order --;
}
else
{
list [i].Order ++;
}
}
}
如果我将最后一个项目订单更改为第一个,这将失败,因为这会使第一个项目订单为 0!
任何人都可以帮忙吗?
谢谢