Queryable.LastOrDefault Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí poslední prvek sekvence nebo výchozí hodnotu, pokud není nalezen žádný prvek.
Přetížení
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource) |
Vrátí poslední prvek sekvence, která splňuje podmínku nebo výchozí hodnotu, pokud se žádný takový prvek nenajde. |
LastOrDefault<TSource>(IQueryable<TSource>, TSource) |
Vrátí poslední prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky. |
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Vrátí poslední prvek sekvence, která splňuje podmínku nebo výchozí hodnotu, pokud se žádný takový prvek nenajde. |
LastOrDefault<TSource>(IQueryable<TSource>) |
Vrátí poslední prvek v sekvenci nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky. |
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Vrátí poslední prvek sekvence, která splňuje podmínku nebo výchozí hodnotu, pokud se žádný takový prvek nenajde.
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
Parametry typu
- TSource
Typ elementů .source
Parametry
- source
- IQueryable<TSource>
An IEnumerable<T> , ze které se vrátí prvek.
- predicate
- Expression<Func<TSource,Boolean>>
Funkce pro otestování každého prvku pro podmínku.
- defaultValue
- TSource
Výchozí hodnota, která se má vrátit, pokud je sekvence prázdná.
Návraty
defaultValue
pokud je posloupnost prázdná nebo pokud žádné prvky neprojdou testem v predikátové funkci; v opačném případě poslední prvek, který projde testem v predikátové funkci.
Výjimky
source
nebo predicate
je null
.
Platí pro
LastOrDefault<TSource>(IQueryable<TSource>, TSource)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Vrátí poslední prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.
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
Parametry typu
- TSource
Typ elementů .source
Parametry
- source
- IQueryable<TSource>
Vrátí IEnumerable<T> poslední prvek.
- defaultValue
- TSource
Výchozí hodnota, která se má vrátit, pokud je sekvence prázdná.
Návraty
defaultValue
pokud je sekvence zdroje prázdná; v opačném případě poslední prvek v objektu IEnumerable<T>.
Výjimky
source
je null
.
Platí pro
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Vrátí poslední prvek sekvence, která splňuje podmínku nebo výchozí hodnotu, pokud se žádný takový prvek nenajde.
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
Parametry typu
- TSource
Typ elementů .source
Parametry
- source
- IQueryable<TSource>
An IQueryable<T> , ze které se vrátí prvek.
- predicate
- Expression<Func<TSource,Boolean>>
Funkce pro otestování každého prvku pro podmínku.
Návraty
default
(TSource
) pokud source
je prázdný nebo pokud žádné prvky neprojdou testem v predikátové funkci; v opačném případě poslední prvek source
, který projde zkouškou v predikátové funkci.
Výjimky
source
nebo predicate
je null
.
Příklady
Následující příklad kódu ukazuje, jak použít LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) předáním predikátu. Při druhém volání metody není v sekvenci žádný prvek, který splňuje podmínku.
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].
Poznámky
Tato metoda má alespoň jeden parametr typu Expression<TDelegate> , jehož argument typu je jedním z Func<T,TResult> typů. Pro tyto parametry můžete předat výraz lambda, který se zkompiluje do Expression<TDelegate>.
Metoda LastOrDefault<TSource>(IQueryable<TSource>) vygeneruje metodu MethodCallExpression , která představuje volání LastOrDefault<TSource>(IQueryable<TSource>) sebe sama jako konstruovanou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderExecute<TResult>(Expression) reprezentované Provider vlastností parametru source
.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazů, který představuje volání LastOrDefault<TSource>(IQueryable<TSource>) , závisí na implementaci typu parametru source
. Očekávané chování spočívá v tom, že vrátí poslední prvek v source
, který splňuje podmínku určenou nástrojem predicate
. Vrátí výchozí hodnotu, pokud v source
nástroji takový prvek neexistuje.
Platí pro
LastOrDefault<TSource>(IQueryable<TSource>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Vrátí poslední prvek v sekvenci nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.
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
Parametry typu
- TSource
Typ elementů .source
Parametry
- source
- IQueryable<TSource>
Vrátí IQueryable<T> poslední prvek.
Návraty
default
(TSource
) pokud source
je prázdný; v opačném případě poslední prvek v source
souboru .
Výjimky
source
je null
.
Příklady
Následující příklad kódu ukazuje, jak použít LastOrDefault<TSource>(IQueryable<TSource>) na prázdné pole.
// 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]
Někdy default(TSource)
hodnota není výchozí hodnotou, kterou chcete použít, pokud kolekce neobsahuje žádné prvky. Místo kontroly výsledku nežádoucí výchozí hodnoty a následné změny v případě potřeby můžete použít metodu DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) k určení výchozí hodnoty, kterou chcete použít, pokud je kolekce prázdná. Pak voláním získejte Last<TSource>(IQueryable<TSource>) poslední prvek. Následující příklad kódu používá obě techniky k získání výchozí hodnoty 1, pokud je kolekce číselných dnů v měsíci prázdná. Vzhledem k tomu, že výchozí hodnota pro celé číslo je 0, což neodpovídá žádnému dni v měsíci, musí být výchozí hodnota zadána jako 1. První výsledná proměnná se po dokončení dotazu zkontroluje pro nežádoucí výchozí hodnotu. Druhá výsledná proměnná se získá voláním DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) , které určí výchozí hodnotu 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
Poznámky
Metoda LastOrDefault<TSource>(IQueryable<TSource>) vygeneruje metodu MethodCallExpression , která představuje volání LastOrDefault<TSource>(IQueryable<TSource>) sebe sama jako konstruovanou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderExecute<TResult>(Expression) reprezentované Provider vlastností parametru source
.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazů, který představuje volání LastOrDefault<TSource>(IQueryable<TSource>) , závisí na implementaci typu parametru source
. Očekávané chování je, že vrátí poslední prvek v source
souboru nebo výchozí hodnotu, pokud source
je prázdná.
Metoda LastOrDefault neposkytuje způsob, jak zadat výchozí hodnotu. Pokud chcete zadat jinou výchozí hodnotu než default(TSource)
, použijte metodu popsanou DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) v části Příklad.