0

我在 sql-server 表中有以下项目。(大小 > 100K)

Name   Order
x      1
...    n
y      25
...    n
z      300
...    n

当更改项目顺序时,(z=25) 我需要重新排序所有项目 (x=1,z=25,y=26) 我的解决方案是使用十进制顺序列并使用以下公式计算新订单:“(上一个订单 + 下一个order) / 2" (x=1,z=24.5,y=25) 用于更改的订单项目。这个解决方案没问题,但是每个变更单都会增加十进制精度。(如果之前更改)

有什么方法吗?

4

1 回答 1

1

您应该使用List作为数据结构。列表中的数据是有序的,因此当您在 y 之前插入“z”时,例如:

MyList.Remove('z')
MyList.Insert(MyList.IndexOf('y'), 'z');

然后列表被重新排序:

MyList.IndexOf('z');  //will return 25
MyList.IndexOf('y');  //will return 26

您可以通过以下方式访问这些值:

MyList[25];  //will return 'z'
MyList[26];  //will return 'y'

请注意,List 是从 0 开始索引的,而不是从 1 开始。

于 2013-10-30T23:06:29.377 回答