Decidí escribir este artículo ya que, aunque sus nombres son bastante descriptivos, me dio curiosidad saber exactamente en qué se diferencian estos 4 métodos pertenecientes al espacio de nombre System.Linq (First, FirstOrDefault, Single y SingleOrDefault) y me gustaría compartirles un resumen sencillo sobre sus definiciones, que nos permite identificar claramente sus diferencias.

First()

Retorna el primer elemento de una secuencia (de uno o más elementos). Si la secuencia está vacía (empty), lanza una excepción del tipo InvalidOperationException.

FirstOrDefault()

Retorna el primer elemento de una secuencia (de uno o más elementos). Si la secuencia está vacía (empty), devuelve el valor por defecto según el tipo de elementos de la secuencia.

Single()

Retorna el único elemento de una secuencia. Si la secuencia está vacía (empty) o tiene más de un elemento, lanza una excepción del tipo InvalidOperationException.

SingleOrDefault()

Retorna el único elemento de una secuencia. Si la secuencia está vacía (empty), devuelve el valor por defecto según el tipo de elementos de la secuencia. Si la secuencia tiene más de un elemento, lanza una excepción del tipo InvalidOperationException.

Nota: Los 4 métodos retornan una excepción del tipo ArgumentNullException si la fuente de elementos es null.

Espero que con este resumen les quede claro sus diferencias y así puedan usar el más apropiado para cada caso que se les presente al momento de programar 🙂

Anuncios

Acerca de Carlos Rojas

http://about.me/karlitoz

Un comentario

  1. […] First() vs FirstOrDefault() vs Single() vs SingleOrDefault() […]