Enumerable.LastOrDefault Metoda

Definicja

Zwraca ostatni element sekwencji lub wartość domyślną, jeśli nie odnaleziono elementu.Returns the last element of a sequence, or a default value if no element is found.

Przeciążenia

LastOrDefault<TSource>(IEnumerable<TSource>)

Zwraca ostatni element sekwencji lub wartość domyślną, jeśli sekwencja nie zawiera żadnych elementów.Returns the last element of a sequence, or a default value if the sequence contains no elements.

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Zwraca ostatni element sekwencji, który spełnia warunek lub wartość domyślną, jeśli taki element nie zostanie znaleziony.Returns the last element of a sequence that satisfies a condition or a default value if no such element is found.

LastOrDefault<TSource>(IEnumerable<TSource>)

Zwraca ostatni element sekwencji lub wartość domyślną, jeśli sekwencja nie zawiera żadnych elementów.Returns the last element of a sequence, or a default value if the sequence contains no elements.

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

Parametry typu

TSource

Typ elementów source.The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T> do zwrócenia ostatniego elementu.An IEnumerable<T> to return the last element of.

Zwraca

TSource

default(TSource), jeśli sekwencja źródłowa jest pusta; w przeciwnym razie ostatni element w IEnumerable<T>.default(TSource) if the source sequence is empty; otherwise, the last element in the IEnumerable<T>.

Wyjątki

source to null.source is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać LastOrDefault<TSource>(IEnumerable<TSource>) w pustej tablicy.The following code example demonstrates how to use LastOrDefault<TSource>(IEnumerable<TSource>) on an empty array.

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>

Czasami wartość default(TSource) nie jest wartością domyślną, która ma być używana, jeśli kolekcja nie zawiera żadnych elementów.Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. Zamiast sprawdzać wynik niepożądanej wartości domyślnej, a następnie zmieniać ją w razie potrzeby, można użyć metody DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource), aby określić wartość domyślną, która ma być używana, jeśli kolekcja jest pusta.Instead of checking the result for the unwanted default value and then changing it if necessary, you can use the DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) method to specify the default value that you want to use if the collection is empty. Następnie Wywołaj Last<TSource>(IEnumerable<TSource>), aby uzyskać ostatni element.Then, call Last<TSource>(IEnumerable<TSource>) to obtain the last element. Poniższy przykład kodu używa obu technik do uzyskania wartości domyślnej 1, jeśli kolekcja dni miesiąca jest pusta.The following code example uses both techniques to obtain a default value of 1 if a collection of numeric days of the month is empty. Ponieważ wartością domyślną dla liczby całkowitej jest 0, która nie odpowiada żadnemu dzień miesiąca, wartość domyślna musi być określona jako 1.Because the default value for an integer is 0, which does not correspond to any day of the month, the default value must be specified as 1 instead. Pierwsza zmienna wynikowa jest sprawdzana pod kątem niepożądanej wartości domyślnej po zakończeniu wykonywania zapytania.The first result variable is checked for the unwanted default value after the query has finished executing. Druga zmienna wynikowa jest uzyskiwana przy użyciu DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource), aby określić wartość domyślną 1.The second result variable is obtained by using DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) to specify a default value of 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

Uwagi

Wartość domyślna dla typów Reference i nullable jest null.The default value for reference and nullable types is null.

Metoda LastOrDefault nie pozwala na określenie wartości domyślnej.The LastOrDefault method does not provide a way to specify a default value. Jeśli chcesz określić wartość domyślną inną niż default(TSource), użyj metody DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource), zgodnie z opisem w sekcji przykład.If you want to specify a default value other than default(TSource), use the DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) method as described in the Example section.

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Zwraca ostatni element sekwencji, który spełnia warunek lub wartość domyślną, jeśli taki element nie zostanie znaleziony.Returns the last element of a sequence that satisfies a condition or a default value if no such element is found.

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

Parametry typu

TSource

Typ elementów source.The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T> do zwrócenia elementu z.An IEnumerable<T> to return an element from.

predicate
Func<TSource,Boolean>

Funkcja testowania każdego elementu na stanie.A function to test each element for a condition.

Zwraca

TSource

default(TSource), jeśli sekwencja jest pusta lub jeśli żadna z elementów nie przeszedł testu w funkcji predykatu; w przeciwnym razie ostatni element, który przekazuje test w funkcji predykatu.default(TSource) if the sequence is empty or if no elements pass the test in the predicate function; otherwise, the last element that passes the test in the predicate function.

Wyjątki

Parametr source lub predicate ma wartość null.source or predicate is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) przez przekazanie predykatu.The following code example demonstrates how to use LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) by passing in a predicate. W drugim wywołaniu metody nie ma elementu w sekwencji, który spełnia warunek.In the second call to the method, there is no element in the sequence that satisfies the condition.

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]

Uwagi

Wartość domyślna dla typów Reference i nullable jest null.The default value for reference and nullable types is null.

Dotyczy