Sobes.tech
Middle

Jaka jest różnica między metodami FirstOrDefault a SingleOrDefault?

sobes.tech AI

Odpowiedź od AI

FirstOrDefault() zwraca pierwszy element sekwencji spełniający warunek lub wartość domyślną (null dla typów referencyjnych, 0 dla typów numerycznych), jeśli takich elementów nie ma.
SingleOrDefault() zwraca jedyny element sekwencji spełniający warunek lub wartość domyślną, jeśli takich elementów nie ma. Jeśli jest więcej niż jeden, zostanie rzucony wyjątek InvalidOperationException.

Cecha FirstOrDefault SingleOrDefault
Znaleziono 1+ elementów Zwraca pierwszy Rzuca wyjątek
Nie znaleziono elementów Zwraca wartość domyślną Zwraca wartość domyślną
Oczekiwana liczba Zero lub więcej Dokładnie jeden
// Przykład użycia FirstOrDefault
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumber = numbers.FirstOrDefault(n => n % 2 == 0); // evenNumber będzie 2
var nonExistent = numbers.FirstOrDefault(n => n > 10);   // nonExistent będzie 0

// Przykład użycia SingleOrDefault
var singleNumber = new List<int> { 7 };
var result = singleNumber.SingleOrDefault(); // result będzie 7

var emptyList = new List<int>();
var defaultValue = emptyList.SingleOrDefault(); // defaultValue będzie 0

var multipleNumbers = new List<int> { 1, 2, 3 };
// var error = multipleNumbers.SingleOrDefault(); // Ta linia rzuci InvalidOperationException