Junior — Middle
Quais são as diferenças entre os métodos FirstOrDefault e SingleOrDefault no LINQ?
sobes.tech IA
Resposta da IA
No LINQ, os métodos FirstOrDefault e SingleOrDefault são usados para selecionar elementos de uma sequência, mas têm semânticas diferentes:
FirstOrDefaultdevolve o primeiro elemento da sequência, se existir, caso contrário devolve o valor padrão (null para tipos de referência).SingleOrDefaultdevolve o único elemento da sequência, se houver exatamente um, caso contrário:- Se não houver elementos, devolve o valor padrão.
- Se houver mais de um, lança uma exceção
InvalidOperationException.
Exemplo:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // retornará 1
var single = numbers.SingleOrDefault(); // lançará uma exceção, pois há mais de um elemento
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // retornará 0 (padrão para int)
var singleEmpty = empty.SingleOrDefault(); // também retornará 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // retornará 42
Resumindo:
- Use
FirstOrDefaultquando quiser obter o primeiro elemento ou null se não houver elementos. - Use
SingleOrDefaultquando esperar exatamente um elemento e quiser obter um erro se houver mais de um.