Sobes.tech
Junior — Middle

Aké sú rozdiely medzi metódami FirstOrDefault a SingleOrDefault v LINQ?

sobes.tech AI

Odpoveď od AI

V LINQ saťou metódy FirstOrDefault a SingleOrDefault slúžia na výber prvkov zo sekvencie, ale majú odlišné významy:

  • FirstOrDefault vráti prvý prvok sekvencie, ak existuje, inak vráti predvolenú hodnotu (null pre referenčné typy).
  • SingleOrDefault vráti jeden jediný prvok sekvencie, ak je presne jeden, inak:
    • Ak žiadne prvky, vráti predvolenú hodnotu.
    • Ak je viac než jeden, vyhodí výnimku InvalidOperationException.

Príklad:

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

var first = numbers.FirstOrDefault(); // vráti 1
var single = numbers.SingleOrDefault(); // vyhodí výnimku, pretože je viac než jeden prvok

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // vráti 0 (predvolená hodnota pre int)
var singleEmpty = empty.SingleOrDefault(); // tiež vráti 0

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

var singleValue = singleItem.SingleOrDefault(); // vráti 42

Zhrnutie:

  • Použite FirstOrDefault, keď chcete získať prvý prvok alebo null, ak žiadny nie je.
  • Použite SingleOrDefault, keď očakávate presne jeden prvok a chcete chybu, ak ich je viac.