gpt4 book ai didi

C# Linq - 从 VALUE 开始按 ASC 排序

转载 作者:行者123 更新时间:2023-12-02 18:20:16 26 4
gpt4 key购买 nike

我有一个 int 数组,我想从某个值开始按升序对值进行排序,我们将其称为 startValue。但是,我想保留所有值,并且大于 startValue 的值应该出现在列表中的最大值之后。

用一个例子可能更容易解释......

int[] values = new int[] { 1, 2, 4, 6, 9 };
int startValue = 4;
int[] orderedValues = { 4, 6, 9, 1, 2 }; // desired result

我怎样才能实现这个目标?我认为这样的方法可以解决问题,但它使新的 orderedValues 的顺序与原始值相同。

int[] orderedValues = values.OrderBy( v => v >= startValue ).ToArray();

最佳答案

您当前的代码有两个问题:

  • 根据值是否至少为startValue进行排序,而不是根据值本身(“升序”部分)
  • falsetrue 之前排序,因此您需要反转条件

这是一个运行良好的示例:

using System;
using System.Linq;

class Test
{
static void Main()
{
int[] values = new int[] { 1, 2, 4, 6, 9 };
int startValue = 4;
int[] orderedValues = values
.OrderBy(v => v < startValue) // Note reversed comparison
.ThenBy(v => v) // Order by value within each segment
.ToArray();
Console.WriteLine(string.Join(", ", orderedValues));
}
}

关于C# Linq - 从 VALUE 开始按 ASC 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com