2017-08-21 9 views
0

このエラーが発生します。System.ArgumentNullException:値をnullにすることはできません。しかし、それは正しいですか? .FreeAmountがヌルの場合、AmountListに選択額をチェックインする必要があります。しかしそれは失敗する。私はここで間違ったことを実際に見ることができません。if文の代わりにC#条件付きラムダ。値はnullエラーではありません

var amount = string.IsNullOrEmpty(formModel.FreeAmount) 
    ? formModel.AmountList 
     .Where(x => x.Selected) 
     .Select(a => a.Value) 
     .SingleOrDefault() 
    : formModel.FreeAmount; 
+1

formModelがnullかどうかを確認しましたか? – Kostis

+1

AmountListにSelectedAmountはありますか? – mcalex

+0

'FormModel'のクラスを' AmountList'のクラスとしてウェルに入れてください。 – mjwills

答えて

2

あなただけFreeAmountAmountListの両方がNULLの場合は、投稿のコードでSystem.ArgumentNullExceptionを取得します。あなたはちょうどそれは私がより多くの可能性があるとし、この場合null(、以降を返すようにしたい場合は、そうでない場合

var amount = string.IsNullOrEmpty(formModel.FreeAmount) 
    ? formModel.AmountList == null 
     ? "Default value if FreeAmount and AmountList are null" 
     : formModel.AmountList 
      .Where(x => x.Selected) 
      .Select(a => a.Value) 
      .SingleOrDefault() 
    : formModel.FreeAmount; 

:あなたは、この場合に使用する他のいくつかのデフォルト値がある場合は、あなたのような何かを行うことができます上記の文で

var amount = string.IsNullOrEmpty(formModel.FreeAmount) 
    ? formModel.AmountList? // <-- The '?' will return null if AmountList is null 
     .Where(x => x.Selected) 
     .Select(a => a.Value) 
     .SingleOrDefault() 
    : formModel.FreeAmount; 
-1

、三項演算子の

残っていた側ができRES:それは、あなただけのヌル条件演算子(?.)を使用することができます)現在SingleOrDefaultとの可能性がありますformModelがNULLの場合はNULLのultで、

したがって、string.IsNullOrEmpty(formModel.FreeAmount) =>はTRUEになります。

したがって、三項演算子は(真)の左側を評価する:formModel値がヌルであるため、これはSystem.ArgumentNullExceptionもたらす

formModel.AmountList 
     .Where(x => x.Selected) 
     .Select(a => a.Value) 
     .SingleOrDefault() 

、あるシンボル。

したがって、formModelがNULLの場合、コマンドはSystem.ArgumentNullExceptionで失敗します。

+1

これは正しくありません。 'formModel'がnullの場合、' formModel.FreeAmount'は 'NullReferenceException'をスローします。 'string.IsNullOrEmpty'を実行することも、三項演算子に到達することもありません。 – mjwills

+0

'formModel?.FreeAmount'が' formModel?.FreeAmount'だったのであれば、それは三者になる可能性があります。しかし、それでも三者は 'NullReferenceException'を投げます。 – mjwills

関連する問題