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

  • FirstOrDefault grąžina pirmąjį elementą sekos, jei jis yra, kitaip grąžina numatytąją reikšmę (null nuorodų tipams).
  • SingleOrDefault grąž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.