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:
FirstOrDefaultvisszaadja a első elemet a szekvenciából, ha van, különben az alapértelmezett értéket (null referencia típusok esetén null).SingleOrDefaultvisszaadja 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
InvalidOperationExceptionformá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.