【问题标题】:Implementing ordering for List of objects in C# and methods for changing the index of the object在 C# 中实现对象列表的排序以及更改对象索引的方法
【发布时间】:2019-11-20 23:12:55
【问题描述】:

假设我有一个对象 Person 列表

{
  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 个人的对象

姓名:戴夫,性别:男,订单索引:1 姓名:阿曼达,性别:女,订单指数:2 姓名:Trevor,性别:男,OrderIndex:3

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

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

我应该如何解决这个问题?

【问题讨论】:

  • 您真的需要OrderIndex 属性吗?你不能只有一个List<Person>,一个人的索引就是数组中实例的索引吗?
  • 另外,OrderIndex 是否只会增加和减少 1?或者任意值?如果有任何价值,我会推荐 LinkedList<T> 而不是 List<T>
  • 订单必须保存在数据库中,所以我需要 OrderIndex 属性。

标签: c# sorting indexing indices


【解决方案1】:

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

以下是搜索下一个免费 int 的方法: get next available integer using LINQ

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 2014-10-31
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多