我正在研究一个算法,它将解决我遇到的一个问题,但是我发现自己有点卡住了。这里是场景:基于变量变化对对象进行排序和更新
我有一个对象,其中包含一个变量称为秩序。
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!
任何人都可以帮忙吗?
感谢
**所以如果我想改变第一个项目的顺序值,所有其他顺序值应该相应地更新,所以没有重复**崩溃我的解析器。也许你想重新表述? – thang 2013-02-14 17:58:44
我正在寻求澄清:从我正在阅读的内容中我收集到5个具有1,2,3,4,5顺序属性的对象,并且您希望能够将Order = 5的对象更改为类似order = 3并更改3-> 4并更改4-> 5以腾出空间。我在正确的轨道上吗? – deepee1 2013-02-14 19:29:48