Sobes.tech
Middle

What is the difference between the methods FirstOrDefault and SingleOrDefault?

sobes.tech AI

Answer from AI

FirstOrDefault() returns the first element of a sequence that satisfies a condition, or a default value (null for reference types, 0 for numeric types) if no such element exists. SingleOrDefault() returns the only element of a sequence that satisfies a condition, or a default value if no such element exists. If more than one element exists, an InvalidOperationException is thrown.

Feature FirstOrDefault SingleOrDefault
Found 1+ elements Returns the first Throws an exception
No elements found Returns default value Returns default value
Expected count Zero or more Exactly one
// Example of using FirstOrDefault
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumber = numbers.FirstOrDefault(n => n % 2 == 0); // evenNumber will be 2
var nonExistent = numbers.FirstOrDefault(n => n > 10);   // nonExistent will be 0

// Example of using SingleOrDefault
var singleNumber = new List<int> { 7 };
var result = singleNumber.SingleOrDefault(); // result will be 7

var emptyList = new List<int>();
var defaultValue = emptyList.SingleOrDefault(); // defaultValue will be 0

var multipleNumbers = new List<int> { 1, 2, 3 };
// var error = multipleNumbers.SingleOrDefault(); // This line will throw InvalidOperationException