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