列挙可能なオブジェクトで ?.First() を使用しようとすると、オブジェクトにアイテムが含まれていない場合、「シーケンスに要素が含まれていません」というエラーがスローされます。
解決策は .FirstOrDefault() を使用することだと認識していますが、最初の努力がうまくいかない理由がわかりません。私は何かを誤解していますか、それとも単に「それらの1つ」ですか?
列挙可能なオブジェクトで ?.First() を使用しようとすると、オブジェクトにアイテムが含まれていない場合、「シーケンスに要素が含まれていません」というエラーがスローされます。
解決策は .FirstOrDefault() を使用することだと認識していますが、最初の努力がうまくいかない理由がわかりません。私は何かを誤解していますか、それとも単に「それらの1つ」ですか?
MSDN のドキュメントによると:
int? length = customers?.Length; // null if customers is null
Customer first = customers?[0]; // null if customers is null
int? count = customers?[0]?.Orders?.Count(); // null if customers, the first customer, or Orders is null
したがって、コレクションが null でない場合、ランタイムは最初の要素を返そうとします。コレクションが空で、 FirstOrDefaultを使用していないため、例外がスローされます。