自定义排序算法更改项目条例

本文关键字:项目 排序 算法 自定义 | 更新日期: 2023-09-27 18:18:37

随处可见,拖拽一个项目到另一行或上下箭头用于在列表中上下移动项目

完成此操作的首选算法或模式是什么

自定义排序算法更改项目条例

嗯,把它放在有序列表中而不是排序列表中?

假设你有一个项目列表:

List<string> l = new List<string>() {"one", "five", "two", "three", "four", "six"};

要将项目1 ("five")移动到索引5 ("six"之前)?

l.Insert(5, l[1]);
l.RemoveAt(1);

这并不难适应任何类型的显示

通常,List<>. removeat (), List<>. insert()就足以处理这个

我想这个问题不仅是关于如何实现移动本身,而且如何处理列表中的近项。

如果列表是有序的,那么每个项目在列表中都应该有自己的编号。所以常用的算法如下:

:1. 记住前一项的id,如

int id = items[number - 1]; //number is the number of the selected item
  1. 记住所选项目的编号

  2. current_item.number,

  3. 更改前一项的编号:通过id:

    获取

    prev = context。where(i => i.id == id),

然后改变prev.number = num

向下移动相同,但数量应该增加。

或者,如果您使用没有任何id的列表,则需要在temp变量(或数字)中保留前一项的值。