自定义排序算法更改项目条例
本文关键字:项目 排序 算法 自定义 | 更新日期: 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
记住所选项目的编号
current_item.number,
更改前一项的编号:通过id:
获取prev = context。where(i => i.id == id),
然后改变prev.number = num
向下移动相同,但数量应该增加。
或者,如果您使用没有任何id的列表,则需要在temp变量(或数字)中保留前一项的值。