Entendendo sobre Single, SingleOrDefault, First e FirstOrDefault – Linq

0

LINQ fornece operadores de elementos que retornam um único elemento ou um elemento específico de uma coleção. São eles: Single, SingleOrDefault, First, FirstOrDefault, Last, LastOrDefault. Vamos ver um pouco mais sobre cada um deles:

Single

Ele retorna um único elemento específico de uma coleção de elementos se o elemento bate com seus critérios. Uma exceção é lançada, se nenhum ou mais de uma correspondência for encontrada para esse elemento na coleção.

SingleOrDefault

Ele retorna um único elemento específico de uma coleção de elementos se o elemento bate com seus critérios. Uma exceção é lançada, se mais de uma correspondência encontrada para esse elemento na coleção. Um valor padrão é retornado, se nenhuma correspondência for encontrada para esse elemento na coleção.

First

Ele retorna primeiro elemento específico de uma coleção de elementos se um ou mais objetos forem encontrados para esse elemento. Uma exceção é lançada, se nenhuma correspondência for encontrada para esse elemento na coleção.Equivalente ao Last, porém retornando o último objeto da colação.

FirstOrDefault

Ele retorna primeiro elemento específico de uma coleção de elementos se um ou mais objetos forem encontrados  para esse elemento. Um valor padrão é retornado, se nenhuma correspondência for encontrada para esse elemento na coleção. Equivalente ao LastOfDefault, porém retornando o último objeto da colação.

Quando usar Sing, SingleOrDefault, First e FirstOrDefault:

  • Quando você quer uma exceção para ser lançada se o conjunto de resultados contém muitos registros, use Single ou SingleOrDefault.
  • Quando você quer um valor padrão a ser devolvido se o conjunto de resultados contém nenhum registro, use SingleOrDefault.
  • Quando você quer sempre um registro, não importa o que o conjunto de resultados contém, use First ou FirstOrDefault.
  • Quando você quer um valor padrão se o conjunto de resultados contém nenhum registro, use FirstOrDefault.

 

Desempenho de SingleOrDefault e FirstOrDefault

FirstOrDefault normalmente executará mais rápido do que a comparação SingleOrDefault, uma vez que estes iterar a coleção até encontrar o primeiro registro. Enquanto SingleOrDefault irá fazer uma busca cega na coleção inteira para encontrar um único resultado.

Por hoje é só e um grande abraço!

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com