Junior — Middle
Kuo skiriasi metodai FirstOrDefault ir SingleOrDefault LINQ?
sobes.tech AI
Atsakymas iš AI
LINQ metodai FirstOrDefault ir SingleOrDefault naudojami elementų iš sekos pasirinkimui, tačiau turi skirtingas semantikas:
FirstOrDefaultgrąžina pirmąjį elementą sekos, jei jis yra, kitaip grąžina numatytąją reikšmę (null nuorodų tipams).SingleOrDefaultgrąžina vienintelį elementą sekos, jei yra tik vienas, kitaip:- Jei nėra elementų, grąžina numatytąją reikšmę.
- Jei yra daugiau nei vienas, meta išimtį
InvalidOperationException.
Pavyzdys:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // grąžins 1
var single = numbers.SingleOrDefault(); // meta išimtį, nes yra daugiau nei vienas elementas
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // grąžins 0 (numatytoji reikšmė int)
var singleEmpty = empty.SingleOrDefault(); // taip pat grąžins 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // grąžins 42
Santrauka:
- Naudokite
FirstOrDefault, jei norite gauti pirmąjį elementą arba null, jei elementų nėra. - Naudokite
SingleOrDefault, jei tikitės tik vieno elemento ir norite gauti klaidą, jei jų daugiau.