C# 数组:降序排序,包括 null 值

本文关键字:包括 null 排序 数组 降序 | 更新日期: 2023-09-27 18:36:17

我有一个(总是 4 个)对象的数组,我需要按对象成员的值降序排序。
我曾想订购它作为

Array = Array.OrderByDescending(p => p.Val)

当然,当其中一个值为空时,这种情况就会消失。因此,我的目标是,但我的 LINQ 达不到,是:

Array = Array.OrderByDescending(p => if( p != null ) p.Val; else float.MinValue)

如何在不必删除并在以后重新添加 null 值的情况下完成此排序?感谢您的帮助。

C# 数组:降序排序,包括 null 值

使用三元条件运算符:

Array = Array.OrderByDescending(p => p != null ? p.Val : float.MinValue)

根据下面的评论,您不能使用 if/else 的原因是因为 lambda 的主体(p => 右侧的内容)必须是一个表达式,除非您用大括号将整个内容括起来。 因此,为了说明,如果需要,您也可以使用该if/else

Array = Array.OrderByDescending(p => 
{
    if (p != null) return p.Val; 
    else return float.MinValue;
});

但显然更啰嗦。

我不确定您正在使用哪些对象/类型,但也许可以尝试如下三元运算符:

Array = Array.OrderByDescending(p => p == null ? float.MinValue : p.Val)

使用此运算符:

Array = Array.OrderByDescending( p => p ?? float.MinValue)