0

假设我有一堆问题字段,用户可以重新排列它们并将已更改位置的问题的新位置和旧位置发送到服务器,然后服务器将使用此数据更新所有受影响的问题数据库中的位置/数字值。如前所述,我只发回已移动问题的新位置和旧位置,而不是在它之前或之后影响的问题等。因此必须在服务器上进行计算。

所以可以说我有问题编号。

1 2 3 4 5 6 7 8

如果我重新排列它们

8 1 2 3 4 5 6 7

然后(问题 8)的新位置(现在是 1)和旧位置 (8) 之间的所有值都需要更新,1 - 7 得到 +1,8 被更改为 1。这当然是一个简化的在这种情况下,可以将问题重新排列为更大的复杂性,其中受影响的范围将重叠,而其他范围在其他范围内终止等。因此,所需的增量和减量将结合起来。听起来像是一个相当普遍的场景,所以如果有人可以举一个例子,最好在 c# 中会很棒。

4

3 回答 3

1

类似于上述答案的内容:您可以向问题对象添加一个“位置”属性(与其在列表中的位置无关)吗?用户在重新排列时会更改此属性。然后你可以做一个 ListOfQuestions.OrderBy(q => q.Position)?

这只是

于 2012-12-07T03:42:14.647 回答
0

在我看来,这就像您试图简单地对集合进行随机插入和删除。

如果是这种情况,aLinked List是一个不错的选择。链表本质上有一个头节点(第一个节点),每个节点都有一个next属性,该属性引用另一个列表。

这样,如果你想删除一个节点,你可以让那个节点的父节点指向那个节点的子节点,如果你想插入一个节点,你可以做相反的事情。

c# 有一个内置的链表类,您可能想签出

于 2012-12-07T02:06:26.703 回答
0

另一种方法是: 1. 创建固定大小的列表/集合(集合 A) 2. 将位置修改后的问题放在新位置/索引上 3. 遍历原始问题集合并将未移动的问题放在空位置新集合(集合 A)。根据问题索引在新集合中的位置更新问题索引。

粗我知道。

于 2012-12-07T03:15:27.400 回答