【发布时间】:2015-04-10 13:16:40
【问题描述】:
假设我有一个包含项目的有序列表,每个项目都可以在这个列表中上下排序。第一个想法是有一个 int(ex 1-10) 的 SortOrder。这样做的问题是我在排序时总是必须更新至少 2 个项目(第 3 项代替第 4 项,从而切换排序值)。如果我在位置 3 放置一个新项目,所有 > 3 的项目都必须更改 sortOrder。
所以为了避免这种情况,我可以使用更大的间隔,例如:
N1 : 10 000
N2 : 20 000
N3 : 30 000
N4 : 40 000
N5 : 50 000
如果将 N4 排序为上一级,它将如下所示:
N1 : 10 000
N2 : 20 000
N4 : 25 000
N3 : 30 000
N5 : 50 000
我的问题是如何在 C# 中以最佳方式处理这个问题?我应该使用什么数据类型?我如何避免经常重新生成整个列表(当不再可以进行排序时)?
我自己的想法是将它作为十进制存储在代码和数据库中。
【问题讨论】:
-
这看起来像是一个建议的解决方案,而不是一个问题。你能解释一下你要解决的问题吗?我不认为使用 int 或 decimal 或任何排序是一件坏事。只是问题没有解释为什么您要插入新项目或更改现有项目的排序顺序。如果你解释一下,我认为你会有更好的机会得到一个好的答案。
-
更新/交换两个号码有什么问题?
-
我尽量减少更新,包括往返数据库和 GUI 更新。
-
还有一件事,会有很多用户同时排序,我想避免锁定所有内容。
标签: c# sql sql-server sorting