(OBS: Este post é continuação do artigo LINQ Extensions)
SingleOrDefault: Retorna um único elemento de uma coleção ou o valor default caso nada satisfaça a condição. Ou, ainda, gera uma exceção se não há apenas um elemento que satisfaça a condição da expressão lambda.
// SingleOrDefault: Retorna um único elemento de uma coleção ou
// o valor default caso nada satisfaça a condição.
// Ou, ainda, gera uma exceção se não há apenas um
// elemento que satisfaça a condição da expressão lambda.
// Exemplo 1: com erro, pois exitem 2 pessoas com 32 anos
try
{
Pessoa pessoaSingleOrDefault1 =
Pessoas.SingleOrDefault(p => p.Idade == 32);
Console.WriteLine(pessoaSingleOrDefault1.Nome);
}
catch (Exception ex)
{
Console.WriteLine("Erro: {0}", ex.Message);
}
// Resultado no console:
// Erro: Sequence contains more than one matching element
// Exemplo 2: José é o único com 28 anos
Pessoa pessoaSingleOrDefault2 = Pessoas.SingleOrDefault(p => p.Idade == 28);
Console.WriteLine(pessoaSingleOrDefault2.Nome);
// Resultado no console:
// José
// Exemplo 3: Retorno default
Pessoa pessoaSingleOrDefault3 = Pessoas.SingleOrDefault(p => p.Idade == 75);
if (pessoaSingleOrDefault3 == null)
Console.WriteLine("Retorno default: NULL");
else
Console.WriteLine(pessoaSingleOrDefault3.Nome);
// Resultado no console:
// Retorno default: NULL



