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:
FirstOrDefaultvráti prvý prvok sekvencie, ak existuje, inak vráti predvolenú hodnotu (null pre referenčné typy).SingleOrDefaultvrá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.