c# - 按自定义顺序排序

标签 c# sorting

我需要对一些代码进行排序,但方式很奇怪

我需要按非正常顺序排序,我需要先排序 40 岁,然后是 50 岁、90 岁、70 岁、80 岁、60 岁、20 岁、30 岁、10 岁、00 岁。

解决这个问题的最佳方法是什么?

它在 C#.net 3.5 中

最佳答案

您通常可以提供自定义方法来进行排序(排序方法或包含这些值的排序集合类)。

或者您是在问该方法中的算法应该是什么?

对于算法,可以使用以下方法:

int getFirstOrder(int v) {
  if (50 <= v && v <= 59) {
    return 1;
  } else if (90 <= v && v <= 99) {
    return 2;
  }
  // and so on
}

int Compare (int v1, int v2)
{
  int o1 = getFirstOrder(v1);
  int o2 = getFirstOrder(v2);

  if (o1 < o2 || (o1 == o2 && v1 < v2)) {
    return -1;
  } else if (o1 > o2 || (o1 == o2 && v1 > v2)) {
    return 1;
  } else {
    return 0;
  }
}

我确信有一种更有效的方法(尤其是对于 getFirstOrder(),但这应该会让您走上正确的方向

关于c# - 按自定义顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10144582/

相关文章:

c++ - Qt:QTableWidget 将整数添加到表中

sorting - 从左上到右下排序坐标

ios - 打印数组中具有特定字符串的所有元素

c# - 高级安装程序 MSI - 程序包只能从 Bootstrap 运行

c# - 在 C# 中用 ffmpeg 覆盖两个音频文件

c# - .NET 写一个文件,附加文件版本信息

c# - 使用 Array.Sort() 进行浮点排序

c - 如何在C中将3个数组排序在一起

C# - 在循环中启用多个文本框

c# - 有没有办法从 C# 应用程序调用非托管(非 COM)dll?