1

オブジェクト メンバーの値を降順で並べ替える必要がある (常に 4 つの) オブジェクトの配列があります。
私はそれを次のように注文することを考えていました

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

もちろん、値の1つがnullの場合、これは失敗しました。だから私が目指しているのは、しかし私のLINQはそうではありません:

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

null 値を削除して後で再度追加することなく、この順序付けを行うにはどうすればよいですか? ご協力いただきありがとうございます。

4

3 に答える 3

12

三項条件演算子を使用します。

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

以下のコメントによると、使用できない理由は、全体を中かっこで囲まない限りif/else、ラムダの本体 ( の右側のものp =>) が式でなければならないためです。説明のために、必要に応じて を使用することもできます。if/else

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

しかし、明らかにもっと冗長です。

于 2012-06-05T20:06:35.863 に答える
2

どのオブジェクト/タイプを使用しているかはわかりませんが、おそらく次のような三項演算子を試してみてください:

Array = Array.OrderByDescending(p => p == null ? float.MinValue : p.Val)
于 2012-06-05T20:07:33.783 に答える
0

次の演算子を使用します。

Array = Array.OrderByDescending( p => p ?? float.MinValue)   
于 2013-10-25T07:58:36.793 に答える