Sobes.tech
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:

  • FirstOrDefault vraća prvi element sekvence, ako postoji, inače vraća podrazumevanu vrednost (null za referentne tipove).
  • SingleOrDefault vrać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 FirstOrDefault kada želite da dobijete prvi element ili null ako nema elemenata.
  • Koristite SingleOrDefault kada očekujete tačno jedan element i želite da dobijete grešku ako ih ima više.