Freigeben über


Queryable.LastOrDefault Methode

Definition

Gibt das letzte Element einer Sequenz oder einen Standardwert zurück, wenn kein Element gefunden wird.

Überlädt

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

Gibt das letzte Element einer Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird.

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

Gibt das letzte Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.

LastOrDefault<TSource>(IQueryable<TSource>)

Gibt das letzte Element in einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.

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

Gibt das letzte Element einer Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird.

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

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Gibt das letzte Element einer Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird.

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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Ein IQueryable<T> , von dem ein Element zurückgegeben werden soll.

predicate
Expression<Func<TSource,Boolean>>

Eine Funktion zum Testen der einzelnen Elemente für eine Bedingung.

Gibt zurück

TSource

default(TSource) wenn source leer ist oder keine Elemente den Test in der Prädikatfunktion bestehen; andernfalls besteht das letzte Element dieses source Tests in der Prädikatfunktion.

Attribute

Ausnahmen

source oder predicate ist null.

Beispiele

Im folgenden Codebeispiel wird die Verwendung LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) durch Übergeben eines Prädikats veranschaulicht. Im zweiten Aufruf der Methode gibt es kein Element in der Sequenz, das die Bedingung erfüllt.

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].

Hinweise

Diese Methode verfügt über mindestens einen Typparameter Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben und zu einem Expression<TDelegate>.

Die LastOrDefault<TSource>(IQueryable<TSource>) Methode generiert eine MethodCallExpression , die den Aufruf LastOrDefault<TSource>(IQueryable<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode der Execute<TResult>(Expression)IQueryProvider durch die Provider Eigenschaft des source Parameters dargestellten Methode übergeben.

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die aufruft LastOrDefault<TSource>(IQueryable<TSource>) , hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass es das letzte Element zurückgibt, das source die durch predicate. Es gibt einen Standardwert zurück, wenn kein solches Element vorhanden sourceist.

Gilt für:

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

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Gibt das letzte Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.

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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static TSource LastOrDefault<TSource>(this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member LastOrDefault : System.Linq.IQueryable<'Source> * 'Source -> 'Source
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Ein IEnumerable<T> , um das letzte Element zurückzugeben.

defaultValue
TSource

Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Gibt zurück

TSource

defaultValue wenn die Quellsequenz leer ist; andernfalls das letzte Element in der IEnumerable<T>.

Attribute

Ausnahmen

source ist null.

Gilt für:

LastOrDefault<TSource>(IQueryable<TSource>)

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Gibt das letzte Element in einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.

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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static TSource? LastOrDefault<TSource>(this System.Linq.IQueryable<TSource> source);
static member LastOrDefault : System.Linq.IQueryable<'Source> -> 'Source
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member LastOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Ein IQueryable<T> , um das letzte Element zurückzugeben.

Gibt zurück

TSource

default(TSource) wenn source leer ist; andernfalls das letzte Element in source.

Attribute

Ausnahmen

source ist null.

Beispiele

Im folgenden Codebeispiel wird die Verwendung LastOrDefault<TSource>(IQueryable<TSource>) in einem leeren Array veranschaulicht.

// 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]

Manchmal ist der Wert nicht default(TSource) der Standardwert, den Sie verwenden möchten, wenn die Auflistung keine Elemente enthält. Anstatt das Ergebnis auf den unerwünschten Standardwert zu überprüfen und es bei Bedarf zu ändern, können Sie die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) Methode verwenden, um den Standardwert anzugeben, den Sie verwenden möchten, wenn die Auflistung leer ist. Rufen Sie Last<TSource>(IQueryable<TSource>) dann auf, um das letzte Element abzurufen. Im folgenden Codebeispiel werden beide Techniken verwendet, um einen Standardwert von 1 zu erhalten, wenn eine Auflistung numerischer Tage des Monats leer ist. Da der Standardwert für eine ganze Zahl 0 ist, was keinem Tag des Monats entspricht, muss der Standardwert stattdessen als 1 angegeben werden. Die erste Ergebnisvariable wird nach Abschluss der Abfrage auf den unerwünschten Standardwert überprüft. Die zweite Ergebnisvariable wird durch Aufrufen DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) abgerufen, um einen Standardwert von 1 anzugeben.

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

Hinweise

Die LastOrDefault<TSource>(IQueryable<TSource>) Methode generiert eine MethodCallExpression , die den Aufruf LastOrDefault<TSource>(IQueryable<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode der Execute<TResult>(Expression)IQueryProvider durch die Provider Eigenschaft des source Parameters dargestellten Methode übergeben.

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die aufruft LastOrDefault<TSource>(IQueryable<TSource>) , hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten ist, dass es das letzte Element in sourceoder einen Standardwert zurückgibt, wenn source leer ist.

Die LastOrDefault Methode bietet keine Möglichkeit, einen Standardwert anzugeben. Wenn Sie einen anderen default(TSource)Standardwert als angeben möchten, verwenden Sie die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) Im Beispielabschnitt beschriebene Methode.

Gilt für:

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

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Gibt das letzte Element einer Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird.

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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Ein IEnumerable<T> , von dem ein Element zurückgegeben werden soll.

predicate
Expression<Func<TSource,Boolean>>

Eine Funktion zum Testen der einzelnen Elemente für eine Bedingung.

defaultValue
TSource

Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Gibt zurück

TSource

defaultValue wenn die Sequenz leer ist oder keine Elemente den Test in der Prädikatfunktion bestehen; andernfalls das letzte Element, das den Test in der Prädikatfunktion bestanden hat.

Attribute

Ausnahmen

source oder predicate ist null.

Gilt für: