Junior — Middle
Koje su razlike između metoda FirstOrDefault i SingleOrDefault u LINQ?
sobes.tech АИ
Одговор од АИ
U LINQ-u, metode FirstOrDefault i SingleOrDefault koriste se za odabir elemenata iz sekvence, ali imaju različite semantike:
FirstOrDefaultvraća prvi element sekvence, ako postoji, inače vraća podrazumevanu vrednost (null za referentne tipove).SingleOrDefaultvraća jedini element sekvence, ako postoji tačno jedan, inače:- Ako nema elemenata, vraća podrazumevanu vrednost.
- Ako postoji više od jednog, baca izuzetak
InvalidOperationException.
Primer:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // vratiće 1
var single = numbers.SingleOrDefault(); // baciće izuzetak, jer ima više od jednog elementa
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // vratiće 0 (podrazumevano za int)
var singleEmpty = empty.SingleOrDefault(); // takođe vratiće 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // vratiće 42
Rezime:
- Koristite
FirstOrDefaultkada želite da dobijete prvi element ili null ako nema elemenata. - Koristite
SingleOrDefaultkada očekujete tačno jedan element i želite da dobijete grešku ako ih ima više.