Enumerable.LastOrDefault Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar det sista elementet i en sekvens eller ett standardvärde om inget element hittas.
Överlagringar
| Name | Description |
|---|---|
| LastOrDefault<TSource>(IEnumerable<TSource>) |
Returnerar det sista elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element. |
| LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Returnerar det sista elementet i en sekvens som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas. |
LastOrDefault<TSource>(IEnumerable<TSource>)
Returnerar det sista elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource LastOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source);
static member LastOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IEnumerable<TSource>
En IEnumerable<T> som returnerar det sista elementet i.
Returer
default(TSource) om källsekvensen är tom. Annars är det sista elementet i IEnumerable<T>.
Undantag
source är null.
Exempel
Följande kodexempel visar hur du använder LastOrDefault<TSource>(IEnumerable<TSource>) på en tom matris.
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>
*/
' Create an empty array.
Dim fruits() As String = {}
' Get the last item in the array, or a
' default value if there are no items.
Dim last As String = fruits.LastOrDefault()
' Display the result.
Console.WriteLine(IIf(String.IsNullOrEmpty(last),
"<string is Nothing or empty>",
last))
' This code produces the following output:
'
' <string is Nothing or empty>
Ibland är värdet default(TSource) för inte det standardvärde som du vill använda om samlingen inte innehåller några element. I stället för att kontrollera resultatet för det oönskade standardvärdet och sedan ändra det om det behövs kan du använda DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metoden för att ange det standardvärde som du vill använda om samlingen är tom.
Last<TSource>(IEnumerable<TSource>) Anropa sedan för att hämta det sista elementet. I följande kodexempel används båda metoderna för att få ett standardvärde på 1 om en samling numeriska dagar i månaden är tom. Eftersom standardvärdet för ett heltal är 0, vilket inte motsvarar någon dag i månaden, måste standardvärdet anges som 1 i stället. Den första resultatvariabeln kontrolleras efter det oönskade standardvärdet när frågan har körts klart. Den andra resultatvariabeln hämtas med hjälp DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) av för att ange standardvärdet 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
*/
Dim daysOfMonth As New List(Of Integer)(New Integer() {})
' Setting the default value to 1 after the query.
Dim lastDay1 As Integer = daysOfMonth.LastOrDefault()
If lastDay1 = 0 Then
lastDay1 = 1
End If
Console.WriteLine($"The value of the lastDay1 variable is {lastDay1}")
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim lastDay2 As Integer = daysOfMonth.DefaultIfEmpty(1).Last()
Console.WriteLine($"The value of the lastDay2 variable is {lastDay2}")
' This code produces the following output:
'
' The value of the lastDay1 variable is 1
' The value of the lastDay2 variable is 1
Kommentarer
Standardvärdet för referenstyper och null-typer är null.
Metoden LastOrDefault ger inget sätt att ange ett standardvärde. Om du vill ange ett annat standardvärde än default(TSource)använder du metoden DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) enligt beskrivningen i avsnittet Exempel.
Gäller för
LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Returnerar det sista elementet i en sekvens som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource LastOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member LastOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IEnumerable<TSource>
Ett IEnumerable<T> att returnera ett element från.
Returer
default(TSource) om sekvensen är tom eller om inga element klarar testet i predikatfunktionen, annars det sista elementet som klarar testet i predikatfunktionen.
Undantag
source eller predicate är null.
Exempel
Följande kodexempel visar hur du använder LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) genom att skicka in ett predikat. I det andra anropet till metoden finns det inget element i sekvensen som uppfyller villkoret.
double[] numbers = { 49.6, 52.3, 51.0, 49.4, 50.2, 48.3 };
double last50 = numbers.LastOrDefault(n => Math.Round(n) == 50.0);
Console.WriteLine("The last number that rounds to 50 is {0}.", last50);
double last40 = numbers.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>.
*/
' Create an array of doubles.
Dim numbers() As Double = {49.6, 52.3, 51.0, 49.4, 50.2, 48.3}
' Get the last item whose value rounds to 50.0.
Dim number50 As Double =
numbers.LastOrDefault(Function(n) Math.Round(n) = 50.0)
Dim output As New System.Text.StringBuilder
output.AppendLine("The last number that rounds to 50 is " & number50)
' Get the last item whose value rounds to 40.0.
Dim number40 As Double =
numbers.LastOrDefault(Function(n) Math.Round(n) = 40.0)
Dim text As String = IIf(number40 = 0.0,
"[DOES NOT EXIST]",
number40.ToString())
output.AppendLine("The last number that rounds to 40 is " & text)
' Display the output.
Console.WriteLine(output.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]
Kommentarer
Standardvärdet för referenstyper och null-typer är null.