Sobes.tech
Junior — Middle

Care sunt diferențele dintre metodele FirstOrDefault și SingleOrDefault în LINQ?

sobes.tech AI

Răspuns de la AI

În LINQ, metodele FirstOrDefault și SingleOrDefault sunt utilizate pentru a selecta elemente dintr-o secvență, dar au semnificații diferite:

  • FirstOrDefault returnează primul element al secvenței, dacă există, altfel returnează valoarea implicită (null pentru tipuri de referință).
  • SingleOrDefault returnează singurul element al secvenței, dacă există exact unul, altfel:
    • Dacă nu există elemente, returnează valoarea implicită.
    • Dacă există mai multe, aruncă o excepție InvalidOperationException.

Exemplu:

var numbers = new List<int> { 1, 2, 3 };

var first = numbers.FirstOrDefault(); // va returna 1
var single = numbers.SingleOrDefault(); // va arunca o excepție, deoarece există mai mult de un element

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // va returna 0 (implicit pentru int)
var singleEmpty = empty.SingleOrDefault(); // de asemenea va returna 0

var singleItem = new List<int> { 42 };

var singleValue = singleItem.SingleOrDefault(); // va returna 42

Rezumat:

  • Folosiți FirstOrDefault când doriți să obțineți primul element sau null dacă nu există elemente.
  • Folosiți SingleOrDefault când așteptați exact un element și doriți să primiți o eroare dacă există mai mult de unul.