Queryable.LastOrDefault Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert het laatste element van een reeks of een standaardwaarde als er geen element wordt gevonden.
Overloads
| Name | Description |
|---|---|
| LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Retourneert het laatste element van een reeks die voldoet aan een voorwaarde of een standaardwaarde als er geen dergelijk element wordt gevonden. |
| LastOrDefault<TSource>(IQueryable<TSource>) |
Retourneert het laatste element in een reeks of een standaardwaarde als de reeks geen elementen bevat. |
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
Retourneert het laatste element van een reeks die voldoet aan een voorwaarde of een standaardwaarde als er geen dergelijk element wordt gevonden.
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);
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
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IQueryable<TSource>
Een IQueryable<T> om een element van te retourneren.
- predicate
- Expression<Func<TSource,Boolean>>
Een functie om elk element voor een voorwaarde te testen.
Retouren
default(TSource) als source deze leeg is of als er geen elementen aan de test in de predicaatfunctie voldoen; anders wordt het laatste element van source die test in de predicaatfunctie doorstaan.
Uitzonderingen
source of predicate is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u dit kunt gebruiken LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) door een predicaat door te geven. In de tweede aanroep van de methode is er geen element in de volgorde die voldoet aan de voorwaarde.
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].
Opmerkingen
Deze methode heeft ten minste één parameter van het type Expression<TDelegate> waarvan het typeargument een van de Func<T,TResult> typen is. Voor deze parameters kunt u een lambda-expressie doorgeven en deze wordt gecompileerd naar een Expression<TDelegate>.
De LastOrDefault<TSource>(IQueryable<TSource>) methode genereert een MethodCallExpression die zichzelf aanroept LastOrDefault<TSource>(IQueryable<TSource>) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de Execute<TResult>(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.
Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept LastOrDefault<TSource>(IQueryable<TSource>) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het het laatste element retourneert source dat voldoet aan de voorwaarde die is opgegeven door predicate. Het retourneert een standaardwaarde als er geen dergelijk element in sourceis.
Van toepassing op
LastOrDefault<TSource>(IQueryable<TSource>)
Retourneert het laatste element in een reeks of een standaardwaarde als de reeks geen elementen bevat.
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);
static member LastOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IQueryable<TSource>
Een IQueryable<T> om het laatste element van te retourneren.
Retouren
default(TSource) indien source leeg, anders het laatste element in source.
Uitzonderingen
source is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze kunt gebruiken LastOrDefault<TSource>(IQueryable<TSource>) voor een lege matrix.
// 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]
Soms is de waarde default(TSource) niet de standaardwaarde die u wilt gebruiken als de verzameling geen elementen bevat. In plaats van het resultaat te controleren op de ongewenste standaardwaarde en deze vervolgens indien nodig te wijzigen, kunt u de DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) methode gebruiken om de standaardwaarde op te geven die u wilt gebruiken als de verzameling leeg is.
Last<TSource>(IQueryable<TSource>) Roep vervolgens aan om het laatste element te verkrijgen. In het volgende codevoorbeeld worden beide technieken gebruikt om een standaardwaarde van 1 te verkrijgen als een verzameling numerieke dagen van de maand leeg is. Omdat de standaardwaarde voor een geheel getal 0 is, dat niet overeenkomt met een dag van de maand, moet de standaardwaarde worden opgegeven als 1. De eerste resultaatvariabele wordt gecontroleerd op de ongewenste standaardwaarde nadat de query is voltooid. De tweede resultaatvariabele wordt verkregen door aan te roepen DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) om een standaardwaarde van 1 op te geven.
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
Opmerkingen
De LastOrDefault<TSource>(IQueryable<TSource>) methode genereert een MethodCallExpression die zichzelf aanroept LastOrDefault<TSource>(IQueryable<TSource>) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de Execute<TResult>(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.
Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept LastOrDefault<TSource>(IQueryable<TSource>) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het het laatste element retourneert in source, of een standaardwaarde als source deze leeg is.
De LastOrDefault methode biedt geen manier om een standaardwaarde op te geven. Als u een andere standaardwaarde dan default(TSource)wilt opgeven, gebruikt u de DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) methode zoals beschreven in de sectie Voorbeeld.