次のコードは null 値の例外を発生させています
Record rec = (Record)obj.Records.Where(x => x.Id == no).SingleOrDefault();
が発生する可能性のある場所が 3 つありNullReferenceException
ます (編集:であることがわかりId
ましたint
)。
obj.Records
もしそうobj
ならnull
Records.Where(...)
もしそうRecords
なら null
x.Id
列挙型にnull
エントリがある場合(つまり、そのコンテキストでは です)。obj.Records
x
null
そうでない場所は次のとおりです(コンパイルできると仮定します):
SingleOrDefault
複数のエントリがある場合にのみ例外をスローします。存在しない場合はnull
、参照型、または値型の既定値を返します。(Record)
鋳造。コンパイルエラーがないのでRecord
、クラスだと思います。値がある場合、それが無効なキャストである (null 例外ではない) 場合にのみ、例外がスローされます。A(Record)null
は、参照型に対して完全に有効です。デバッグしてステップスルーし、例外の原因を特定する必要があります。
まあ、そうであるか、レコードが見つからないかのどちらかobj.Records
です。しかし、これも実際には機能しません... ...もちろんどこかで変数でない限り。null
x.Id == no
no
行を次のように変更します。
Record rec = obj.Records.Where(x => x.Id == no).SingleOrDefault() as Record;
タイプのdefault
は になりますnull
。さらに、あなたのコードを完全には知りませんが、前述の行が単に次のようになる可能性はほとんどありません。
Record rec = obj.Records.Where(x => x.Id == no).SingleOrDefault();
Records
種類の出品ではないRecord
でしょうか?