Compartir vía


Queryable.LastOrDefault Método

Definición

Devuelve el último elemento de una secuencia o un valor predeterminado si no se encuentra ningún elemento.

Sobrecargas

LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)

Devuelve el último elemento de una secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento.

LastOrDefault<TSource>(IQueryable<TSource>, TSource)

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

LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Devuelve el último elemento de una secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento.

LastOrDefault<TSource>(IQueryable<TSource>)

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

LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Devuelve el último elemento de una secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate, TSource defaultValue);
static member LastOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean)), defaultValue As TSource) As TSource

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

IEnumerable<T> del que se va a devolver un elemento.

predicate
Expression<Func<TSource,Boolean>>

Función para probar cada elemento de una condición.

defaultValue
TSource

Valor predeterminado que se va a devolver si la secuencia está vacía.

Devoluciones

TSource

defaultValue si la secuencia está vacía o si ningún elemento supera la prueba en la función de predicado; de lo contrario, el último elemento que pasa la prueba en la función de predicado.

Excepciones

source o predicate es null.

Se aplica a

LastOrDefault<TSource>(IQueryable<TSource>, TSource)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

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

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member LastOrDefault : System.Linq.IQueryable<'Source> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As TSource

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

IEnumerable<T> del que se va a devolver el último elemento.

defaultValue
TSource

Valor predeterminado que se va a devolver si la secuencia está vacía.

Devoluciones

TSource

defaultValue si la secuencia de origen está vacía; de lo contrario, el último elemento de IEnumerable<T>.

Excepciones

source es null.

Se aplica a

LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Devuelve el último elemento de una secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
public static TSource? LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member LastOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

IQueryable<T> del que se va a devolver un elemento.

predicate
Expression<Func<TSource,Boolean>>

Función para probar cada elemento de una condición.

Devoluciones

TSource

default(TSource) si source está vacío o si ningún elemento pasa la prueba en la función de predicado; de lo contrario, el último elemento de source que pasa la prueba en la función de predicado.

Excepciones

source o predicate es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) pasando un predicado. En la segunda llamada al método , no hay ningún elemento en la secuencia que cumpla la condición.

double[] numbers = { 49.6, 52.3, 51.0, 49.4, 50.2, 48.3 };

// Get the last number in the array that rounds to 50.0,
// or else the default value for type double (0.0).
double last50 =
    numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 50.0);

Console.WriteLine("The last number that rounds to 50 is {0}.", last50);

// Get the last number in the array that rounds to 40.0,
// or else the default value for type double (0.0).
double last40 =
    numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 40.0);

Console.WriteLine(
    "The last number that rounds to 40 is {0}.",
    last40 == 0.0 ? "[DOES NOT EXIST]" : last40.ToString());

/*
    This code produces the following output:

    The last number that rounds to 50 is 50.2.
    The last number that rounds to 40 is [DOES NOT EXIST].
*/
Dim numbers() As Double = {49.6, 52.3, 51.0, 49.4, 50.2, 48.3}

' Get the last number in the array that rounds to 50.0,
' or else the default value for type double (0.0).
Dim last50 As Double = _
     numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 50.0)

MsgBox(String.Format("The last number that rounds to 50 is {0}.", last50))

' Get the last number in the array that rounds to 40.0,
' or else the default value for type double (0.0).
Dim last40 As Double = _
    numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 40.0)

MsgBox(String.Format("The last number that rounds to 40 is {0}.", _
    IIf(last40 = 0.0, "[DOES NOT EXIST]", last40.ToString())))

'This code produces the following output:

'The last number that rounds to 50 is 50.2.
'The last number that rounds to 40 is [DOES NOT EXIST].

Comentarios

Este método tiene al menos un parámetro de tipo Expression<TDelegate> cuyo argumento de tipo es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>

El LastOrDefault<TSource>(IQueryable<TSource>) método genera un MethodCallExpression objeto que representa llamarse LastOrDefault<TSource>(IQueryable<TSource>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada LastOrDefault<TSource>(IQueryable<TSource>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que devuelve el último elemento de source que satisface la condición especificada por predicate. Devuelve un valor predeterminado si no hay ningún elemento de este tipo en source.

Se aplica a

LastOrDefault<TSource>(IQueryable<TSource>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

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

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
public static TSource? LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
static member LastOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

IQueryable<T> del que se va a devolver el último elemento.

Devoluciones

TSource

default(TSource) si source está vacío; de lo contrario, el último elemento de source.

Excepciones

source es null.

Ejemplos

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

// Create an empty array.
string[] fruits = { };

// Get the last item in the array, or else the default
// value for type string (null).
string last = fruits.AsQueryable().LastOrDefault();

Console.WriteLine(
    String.IsNullOrEmpty(last) ? "[STRING IS NULL OR EMPTY]" : last);

/*
    This code produces the following output:

    [STRING IS NULL OR EMPTY]
*/
' Create an empty array.
Dim fruits() As String = {}

' Get the last item in the array, or else the default
' value for type string (null).
Dim last As String = fruits.AsQueryable().LastOrDefault()

MsgBox(IIf(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 desea usar si la colección no contiene ningún elemento. En lugar de comprobar el resultado del valor predeterminado no deseado y, a continuación, cambiarlo si es necesario, puede usar el DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) método para especificar el valor predeterminado que desea usar si la colección está vacía. A continuación, llame Last<TSource>(IQueryable<TSource>) a para obtener el último elemento. En el ejemplo de código siguiente se usan ambas técnicas para obtener un valor predeterminado de 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 en su lugar. La primera variable de resultado se comprueba para el valor predeterminado no deseado una vez completada la consulta. La segunda variable de resultado se obtiene llamando DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) a para especificar un valor predeterminado de 1.

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

// Setting the default value to 1 after the query.
int lastDay1 = daysOfMonth.AsQueryable().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.AsQueryable().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
*/
Dim daysOfMonth As New List(Of Integer)(New Integer() {})

' Setting the default value to 1 after the query.
Dim lastDay1 As Integer = daysOfMonth.AsQueryable().LastOrDefault()
If lastDay1 = 0 Then
    lastDay1 = 1
End If
MsgBox(String.Format("The value of the lastDay1 variable is {0}", lastDay1))

' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim lastDay2 As Integer = daysOfMonth.AsQueryable().DefaultIfEmpty(1).Last()
MsgBox(String.Format("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

Comentarios

El LastOrDefault<TSource>(IQueryable<TSource>) método genera un MethodCallExpression objeto que representa llamarse LastOrDefault<TSource>(IQueryable<TSource>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada LastOrDefault<TSource>(IQueryable<TSource>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que devuelve el último elemento de sourceo un valor predeterminado si source está vacío.

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

Se aplica a