Linq の First
FirstOrDefault
Single
SingleOrDefault
の挙動についてまとめてみました。
検索結果に応じて以下のような動作をします。
見つからなかった | 1つだけ見つかった | 複数見つかった | |
---|---|---|---|
First |
例外 | 対象の値 | 最初に見つかった値 |
FirstOrDefault |
デフォルト値 | 対象の値 | 最初に見つかった値 |
Single |
例外 | 対象の値 | 例外 |
SingleOrDefault |
デフォルト値 | 対象の値 | 例外 |
例外は InvalidOperationException
が発生します。
また、OrDefault
を使うと対象のデータが見つからなかった場合にデフォルト値が返ってきますが、例えば int
で 0
が返ってきた場合には、対象のデータが見つからなかったのか、 0 というデータを見つけたのか、という判断がつかないため、注意が必要です。