Enumerable.LastOrDefault Enumerable.LastOrDefault Enumerable.LastOrDefault Enumerable.LastOrDefault Method

定義

傳回序列的最後一個項目;如果找不到任何項目,則傳回預設值。Returns the last element of a sequence, or a default value if no element is found.

多載

LastOrDefault<TSource>(IEnumerable<TSource>) LastOrDefault<TSource>(IEnumerable<TSource>) LastOrDefault<TSource>(IEnumerable<TSource>) LastOrDefault<TSource>(IEnumerable<TSource>)

傳回序列的最後一個元素;如果序列中沒有包含任何元素,則傳回預設值。Returns the last element of a sequence, or a default value if the sequence contains no elements.

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

傳回序列中符合條件的最後一個元素;如果找不到這類元素,則傳回預設值。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>) LastOrDefault<TSource>(IEnumerable<TSource>) LastOrDefault<TSource>(IEnumerable<TSource>) LastOrDefault<TSource>(IEnumerable<TSource>)

傳回序列的最後一個元素;如果序列中沒有包含任何元素,則傳回預設值。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

類型參數

TSource

source 項目的類型。The type of the elements of source.

參數

source
IEnumerable<TSource>

要傳回最後一個項目的 IEnumerable<T>An IEnumerable<T> to return the last element of.

傳回

TSource TSource TSource TSource

如果來源序列是空的,則為 default(TSource),否則為 IEnumerable<T> 中的最後一個項目。default(TSource) if the source sequence is empty; otherwise, the last element in the IEnumerable<T>.

例外狀況

範例

下列程式碼範例示範如何在空LastOrDefault<TSource>(IEnumerable<TSource>)陣列上使用。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.
MsgBox(IIf(String.IsNullOrEmpty(last),
       "<string is Nothing or empty>",
       last))

' This code produces the following output:
'
' <string is Nothing or empty>

如果集合中沒有default(TSource)包含任何元素, 有時的值不是您想要使用的預設值。Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. 如果集合是空的, 您可以使用DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)方法來指定您想要使用的預設值, 而不是檢查不必要的預設值的結果, 然後在必要時加以變更。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. 然後, 呼叫Last<TSource>(IEnumerable<TSource>)以取得最後一個元素。Then, call Last<TSource>(IEnumerable<TSource>) to obtain the last element. 下列程式碼範例會使用這兩種技術來取得預設值 1 (如果月份的數位天數集合是空的)。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. 因為整數的預設值是 0, 不會對應到當月的任何一天, 所以預設值必須改為指定為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. 查詢完成執行之後, 第一個結果變數會檢查是否有不必要的預設值。The first result variable is checked for the unwanted default value after the query has finished executing. 第二個結果變數的取得方式DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)是使用指定預設值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
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.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

備註

Reference 和 nullable 類型的預設值為nullThe default value for reference and nullable types is null.

LastOrDefault方法不會提供指定預設值的方式。The LastOrDefault method does not provide a way to specify a default value. 如果您想要指定以外的預設值default(TSource), 請DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)使用方法, 如範例一節中所述。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>) LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

傳回序列中符合條件的最後一個元素;如果找不到這類元素,則傳回預設值。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

類型參數

TSource

source 項目的類型。The type of the elements of source.

參數

source
IEnumerable<TSource>

傳回項目的 IEnumerable<T>An IEnumerable<T> to return an element from.

predicate
Func<TSource,Boolean>

用來測試每個項目是否符合條件的函式。A function to test each element for a condition.

傳回

TSource TSource TSource TSource

如果序列是空的,或是沒有任何項目通過述詞函式中的測試,則為 default(TSource),否則為通過述詞函式之測試的最後一個項目。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.

例外狀況

sourcepredicatenullsource or predicate is null.

範例

下列程式碼範例示範如何藉由LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)傳入述詞來使用。The following code example demonstrates how to use LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) by passing in a predicate. 在第二次呼叫方法時, 序列中沒有符合條件的元素。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.
MsgBox(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]

備註

Reference 和 nullable 類型的預設值為nullThe default value for reference and nullable types is null.

適用於