Junior — Middle
Jaké jsou rozdíly mezi metodami FirstOrDefault a SingleOrDefault v LINQ?
sobes.tech AI
Odpověď od AI
V LINQ se používají metody FirstOrDefault a SingleOrDefault k výběru prvků ze sekvence, ale mají odlišné významy:
FirstOrDefaultvrací první prvek sekvence, pokud existuje, jinak vrací výchozí hodnotu (null pro referenční typy).SingleOrDefaultvrací jediný prvek sekvence, pokud je přesně jeden, jinak:- Pokud žádné prvky, vrací výchozí hodnotu.
- Pokud je více než jeden, vyvolá výjimku
InvalidOperationException.
Příklad:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // vrátí 1
var single = numbers.SingleOrDefault(); // vyvolá výjimku, protože je více než jeden prvek
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // vrátí 0 (výchozí pro int)
var singleEmpty = empty.SingleOrDefault(); // také vrátí 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // vrátí 42
Shrnutí:
- Použijte
FirstOrDefault, když chcete získat první prvek nebo null, pokud žádný není. - Použijte
SingleOrDefault, když očekáváte přesně jeden prvek a chcete chybu, pokud je jich více.