Esta documentación está archivada y no tiene mantenimiento.

Enumerable.LastOrDefault<TSource> (Método) (IEnumerable<TSource>)

Actualización: noviembre 2007

Devuelve el último elemento de una secuencia o un valor predeterminado si la secuencia no contiene elementos.

Espacio de nombres:  System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static TSource LastOrDefault<TSource>(
	this IEnumerable<TSource> source
)

J# admite el uso de APIs genéricas pero no admite la declaración de nuevas API.
JScript no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
Tipo: System.Collections.Generic.IEnumerable<TSource>
Interfaz IEnumerable<T> de la que se va a devolver el último elemento.

Valor devuelto

Tipo: TSource
default(TSource) si la secuencia de origen está vacía; de lo contrario, el último elemento de IEnumerable<T>.

Nota sobre el uso

En Visual Basic y C#, se puede llamar a este método como a un método de instancia en cualquier objeto de tipo IEnumerable<TSource>. Cuando emplee la sintaxis del método de instancia para llamar a este método, omita el primer parámetro. Para obtener más información, vea Métodos de extensión (Visual Basic) o Métodos de extensión (Guía de programación de C#).

ExcepciónCondición
ArgumentNullException

source es null.

El valor predeterminado de los tipos de referencia y los tipos que aceptan valores NULL es null.

El método LastOrDefault no proporciona una manera de especificar un valor predeterminado. Si desea especificar un valor predeterminado distinto de default(TSource), utilice el método DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) tal como se describe en la sección Ejemplo.

En el ejemplo de código siguiente se muestra cómo se utiliza LastOrDefault<TSource>(IEnumerable<TSource>) en una matriz vacía.

string[] fruits = { };
string last = fruits.LastOrDefault();
Console.WriteLine(
    String.IsNullOrEmpty(last) ? "<string is null or empty>" : last);

/*
 This code produces the following output:

 <string is null or empty>
*/



A veces, el valor de default(TSource) no es el valor predeterminado que se desea utilizar si la colección no contiene ningún elemento. En lugar de comprobar el resultado para ver si su valor predeterminado no es el deseado y cambiarlo a continuación si es necesario, puede utilizar el método DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) para especificar el valor predeterminado que desee utilizar si la colección está vacía. A continuación, llame a Last<TSource>(IEnumerable<TSource>) para obtener el último elemento. En el ejemplo de código siguiente se utilizan ambas técnicas para obtener el valor predeterminado 1 si una colección de días numéricos del mes está vacía. Dado que el valor predeterminado de un entero es 0, que no corresponde a ningún día del mes, el valor predeterminado debe especificarse como 1. Se comprueba la primera variable del resultado para ver si el valor predeterminado no es el deseado tras finalizar la ejecución de la consulta. La segunda variable del resultado se obtiene mediante DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) para especificar el valor predeterminado 1.

List<int> daysOfMonth = new List<int> { };

// Setting the default value to 1 after the query.
int lastDay1 = daysOfMonth.LastOrDefault();
if (lastDay1 == 0)
{
    lastDay1 = 1;
}
Console.WriteLine("The value of the lastDay1 variable is {0}", lastDay1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int lastDay2 = daysOfMonth.DefaultIfEmpty(1).Last();
Console.WriteLine("The value of the lastDay2 variable is {0}", lastDay2);

/*
 This code produces the following output:

 The value of the lastDay1 variable is 1
 The value of the lastDay2 variable is 1
*/


Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5

.NET Compact Framework

Compatible con: 3.5
Mostrar: