質問: connection.Query("SELECT max(val) FROM info").FirstOrDefault(); ``` これは動作します - 行が存在しない限り、私は > オブジェクト参照がオブジェクト インスタンスに設定されていません。 > > 'OrDefault'はレコードが存在しないときに0を返しますか? どのようにしてクラッシュを防ぐために0(ゼロ以外の値)を返すことができますか? どうも
回答: 問題は、あなたがDapperに`int`シーケンスを期待していると言っているが、実際には`null`値の可能性があるということです。そのため、タイプを変更する必要があります ``` var x = connection.Query("SELECT max(val) FROM info").Single() ?? 0; ``` または、 `null`を処理するためにクエリを変更する必要があり`null` 。 ``` var x = connection.Query("SELECT COALESCE(max(val), 0) FROM info").Single(); ``` 私はここで`Single`を使用しています。なぜなら、このクエリはちょうど1つの行しか返さないためです。 `FirstOrDefault`は、シーケンスが必要で、最初のアイテムのみが必要な場合、またはアイテムがない場合にアイテムタイプのデフォルト値を使用する場合に使用します。