(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  
Anúncios