Junior — Middle
¿Cuáles son las diferencias entre los métodos FirstOrDefault y SingleOrDefault en LINQ?
sobes.tech AI
Respuesta de la IA
En LINQ, los métodos FirstOrDefault y SingleOrDefault se utilizan para seleccionar elementos de una secuencia, pero tienen diferentes semánticas:
FirstOrDefaultdevuelve el primer elemento de la secuencia, si existe, de lo contrario devuelve el valor predeterminado (null para tipos de referencia).SingleOrDefaultdevuelve el único elemento de la secuencia, si hay exactamente uno, de lo contrario:- Si no hay elementos, devuelve el valor predeterminado.
- Si hay más de uno, lanza una excepción
InvalidOperationException.
Ejemplo:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // devolverá 1
var single = numbers.SingleOrDefault(); // lanzará una excepción, ya que hay más de un elemento
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // devolverá 0 (predeterminado para int)
var singleEmpty = empty.SingleOrDefault(); // también devolverá 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // devolverá 42
En resumen:
- Use
FirstOrDefaultcuando quiera obtener el primer elemento o null si no hay elementos. - Use
SingleOrDefaultcuando espere exactamente un elemento y quiera obtener un error si hay más de uno.