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!