Escrito el 23/04/2024

Tutorial LINQ: Single

Devuelve el único elemento que cumple la condición dada de una colección. Si existe más de un elemento, entonces dispara una excepción

Single

En este caso, obtiene el único usuario de la colección mayor de edad.

var users = new List<User> {new { Age = 10 }, new { Age = 19 }new { Age = 10 }, new { Age = 11 }}
var adult = users.First(x => x.Age > 18);
var adult = users.First(x => x.Age > 10);// ERROR

Nota 1: Si la colección está vacía, disparará una excepción en tiempo de ejecución.

Nota 2: Si la colección tiene un sólo elemento se puede llamar al método Single sin parámetros. Es una forma de convertir una colección a un elemento.

SingleOrDefault

En este caso, intenta obtener el último usuario que cumpla la condición, haya más de un elemento que cumple la condición o no exista elemento que cumpla. En este caso devuelve el valor default

var users = new List<User> {new { Age = 10 }, new { Age = 19 }new { Age = 10 }, new { Age = 11 }}
User firstAdult = users.SingleOrDefault(x => x.Age > 18);
User firstAdult = users.SingleOrDefault(x => x.Age > 10);// null