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

備註

參考和可為 null 類型的預設值是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]

備註

參考和可為 null 類型的預設值是nullThe default value for reference and nullable types is null.

適用於