Sobes.tech
Junior — Middle

Mik a különbségek a FirstOrDefault és SingleOrDefault módszerek között a LINQ-ben?

sobes.tech MI

Válasz az MI-től

LINQ-ben a FirstOrDefault és a SingleOrDefault módszerek az elemek kiválasztására szolgálnak egy szekvenciából, de különböző szemantikai jelentéssel bírnak:

  • FirstOrDefault visszaadja a első elemet a szekvenciából, ha van, különben az alapértelmezett értéket (null referencia típusok esetén null).
  • SingleOrDefault visszaadja az egyetlen elemet a szekvenciából, ha pontosan egy van, különben:
    • Ha nincs elem, az alapértelmezett értéket adja vissza.
    • Ha több van, kivételt dob InvalidOperationException formájában.

Példa:

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

var first = numbers.FirstOrDefault(); // 1-t ad vissza
var single = numbers.SingleOrDefault(); // kivételt dob, mert több elem van

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // 0-t ad vissza (alapértelmezett int esetén)
var singleEmpty = empty.SingleOrDefault(); // szintén 0-t ad vissza

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

var singleValue = singleItem.SingleOrDefault(); // 42-t ad vissza

Összefoglalva:

  • Használja a FirstOrDefault-t, ha az első elemet vagy null-t szeretné, ha nincs elem.
  • Használja a SingleOrDefault-t, ha pontosan egy elemet vár, és hibát szeretne kapni, ha több van.