Sobes.tech
Middle

Jaký je rozdíl mezi metodami FirstOrDefault a SingleOrDefault?

sobes.tech AI

Odpověď od AI

FirstOrDefault() vrátí první prvek sekvence, který splňuje podmínku, nebo výchozí hodnotu (null pro referenční typy, 0 pro číselné typy), pokud takové prvky neexistují.
SingleOrDefault() vrátí jediný prvek sekvence, který splňuje podmínku, nebo výchozí hodnotu, pokud takové prvky neexistují. Pokud je jich více, je vyvolána výjimka InvalidOperationException.

Vlastnost FirstOrDefault SingleOrDefault
Nalezen 1+ prvků Vrátí první Vyvolá výjimku
Není nalezen žádný prvek Vrátí výchozí hodnotu Vrátí výchozí hodnotu
Očekávané množství Nula nebo více Přesně jeden
// Příklad použití FirstOrDefault
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumber = numbers.FirstOrDefault(n => n % 2 == 0); // evenNumber bude 2
var nonExistent = numbers.FirstOrDefault(n => n > 10);   // nonExistent bude 0

// Příklad použití SingleOrDefault
var singleNumber = new List<int> { 7 };
var result = singleNumber.SingleOrDefault(); // result bude 7

var emptyList = new List<int>();
var defaultValue = emptyList.SingleOrDefault(); // defaultValue bude 0

var multipleNumbers = new List<int> { 1, 2, 3 };
// var error = multipleNumbers.SingleOrDefault(); // Tato řádka vyvolá InvalidOperationException