在C#中实现对象列表的排序和更改对象索引的方法

Implementing ordering for List of objects in C# and methods for changing the index of the object

假设我有一个对象列表

{
  public string Name {get; set;}
  public string Gender {get; set;}
}

我想要创建一个列表,我可以使用名为 OrderIndex 的 属性 进行排序。所以我将这个 属性 添加到 Person 对象:

{
  public string Name {get; set;}
  public string Gender {get; set;}
  public int OrderIndex {get; set;}
}

此 OrderIndex 属性 的目的是将 Person 对象放在列表中的特定索引处,以便将 Person 对象排名更高。

但我非常担心因此而必须实施的逻辑量。因为说我有 3 个人物

姓名:Dave,性别:男,OrderIndex:1 姓名:Amanda,性别:女,OrderIndex:2 姓名:Trevor,性别:男,OrderIndex:3

如果我减少 Trevor 的 OrderIndex,我还必须确保 Amandas OrderIndex 增加,以免两个人对象具有相同的 OrderIndex。

我不确定这个问题以前是否在这里得到了回答,但我一直没有找到一个特定的线程来回答这个问题。

我该如何解决这个问题?

如果您更改 OrderIndex,则必须找到下一个空闲的整数。因此,如果将 Trevors OrderIndex 更改为 2,则必须在下一个空闲整数中搜索 Amandas OrderIndex。因此,创建一个完成此操作的方法。

以下是搜索下一个空闲整数的方法: get next available integer using LINQ