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

上記の回答に沿ったもの:質問オブジェクトに「position」プロパティを追加できますか(リスト内の位置とは関係ありません)?ユーザーは、再配置するときにこのプロパティを変更します。次に、ListOfQuestions.OrderBy(q => q.Position)を実行できますか?

これだけ

于 2012-12-07T03:42:14.647 に答える
0

別の方法は次のとおりです。 1. 固定サイズのリスト/コレクション (コレクション A) を作成します。 2. 位置が変更された問題を新しい位置/インデックスに配置します。 3. 元の問題コレクションを繰り返し、移動していない問題を新しいコレクション (コレクション A)。新しいコレクション内の位置に基づいて質問インデックスを更新します。

粗野 私は知っています。

于 2012-12-07T03:15:27.400 に答える
0

This looks to me like you're trying to simply do random insertions and removals of a collection.

If that is the case, a Linked List is a good option for that. A linked list essentially has a head node(first node) and each node has a next attribute, which references another list.

that way, if you want to remove a node you can just make that node's parent node point to that node's child, and if you want to insert a node you can do the reverse.

c# has a built-in linked list class that you might want to check out

于 2012-12-07T02:06:26.703 に答える