我有一个(总是4个)对象的数组,我需要通过对象成员的降序来排序 我曾想过把它命名为
Array = Array.OrderByDescending(p => p.Val)
当其中一个值为null时,这就失败了。所以我的目标是什么,但我的LINQ不能满足,是:
Array = Array.OrderByDescending(p => if( p != null ) p.Val; else float.MinValue)
如何在不删除并稍后重新添加空值的情况下完成此排序?谢谢你的帮助。
答案 0 :(得分:12)
使用三元条件运算符:
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;
});
但显然更加冗长。
答案 1 :(得分:2)
我不确定您正在使用哪些对象/类型,但可能尝试使用以下三元运算符:
Array = Array.OrderByDescending(p => p == null ? float.MinValue : p.Val)
答案 2 :(得分:0)
使用此运算符:
Array = Array.OrderByDescending( p => p ?? float.MinValue)