gpt4 book ai didi

c# - 自定义订单,可以吗?

转载 作者:行者123 更新时间:2023-11-30 19:03:16 26 4
gpt4 key购买 nike

我有以下收藏:

-3, -2, -1, 0, 1, 2, 3

如何在单个 order by 语句中按以下形式对它们进行排序:

负数首先按其(绝对值)排序,然后是正数。

-1, -2, -3, 0, 1, 2, 3

最佳答案

组合排序,先按符号,再按绝对值:

list.OrderBy(x => Math.Sign(x)).ThenBy(x => Math.Abs(x));

或:

from x in list
orderby Math.Sign(x), Math.Abs(x)
select x;

这在概念上类似于 SQL 语句:

SELECT x
FROM list
ORDER BY SIGN(x), ABS(x)

在 LINQ-to-Objects 中,排序只执行一次,而不是两次。

警告:如果 x == int.MinValue,Math.Abs​​(x) 将失败。如果这种边际情况很重要,那么您必须单独处理它。

关于c# - 自定义订单,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741870/

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