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

  • FirstOrDefault vrací první prvek sekvence, pokud existuje, jinak vrací výchozí hodnotu (null pro referenční typy).
  • SingleOrDefault vrací 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.