Enumerable.LastOrDefault Yöntem

Tanım

Bir sıranın son öğesini veya hiçbir öğe bulunmazsa varsayılan değeri döndürür.Returns the last element of a sequence, or a default value if no element is found.

Aşırı Yüklemeler

LastOrDefault<TSource>(IEnumerable<TSource>)

Bir sıranın son öğesini veya dizi hiçbir öğe içermiyorsa varsayılan değeri döndürür.Returns the last element of a sequence, or a default value if the sequence contains no elements.

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

Böyle bir öğe bulunmazsa bir koşulu karşılayan bir sıranın son öğesini veya varsayılan değeri döndürür.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>)

Bir sıranın son öğesini veya dizi hiçbir öğe içermiyorsa varsayılan değeri döndürür.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);
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

Tür Parametreleri

TSource

Öğelerinin türü source .The type of the elements of source.

Parametreler

source
IEnumerable<TSource>

Öğesinin IEnumerable<T> son öğesini döndürecek bir.An IEnumerable<T> to return the last element of.

Döndürülenler

TSource

default( TSource ) kaynak sırası boşsa; Aksi takdirde, içindeki son öğe IEnumerable<T> .default(TSource) if the source sequence is empty; otherwise, the last element in the IEnumerable<T>.

Özel durumlar

source, null değeridir.source is null.

Örnekler

Aşağıdaki kod örneği, LastOrDefault<TSource>(IEnumerable<TSource>) boş bir dizide nasıl kullanılacağını göstermektedir.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>

Bazen değeri, default(TSource) koleksiyon hiçbir öğe içermiyorsa, kullanmak istediğiniz varsayılan değer değildir.Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. İstenmeyen varsayılan değer için sonucu denetlemek ve gerekirse değiştirmek yerine, DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) Koleksiyon boşsa kullanmak istediğiniz varsayılan değeri belirtmek için yöntemini kullanabilirsiniz.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. Ardından, Last<TSource>(IEnumerable<TSource>) son öğeyi almak için öğesini çağırın.Then, call Last<TSource>(IEnumerable<TSource>) to obtain the last element. Aşağıdaki kod örneği, ayın bir sayısal gün koleksiyonu boşsa varsayılan değer olan 1 ' i elde etmek için her iki tekniği kullanır.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. Bir tamsayının varsayılan değeri, ayın herhangi bir gününe karşılık gelen 0 ' dır, bunun yerine varsayılan değer 1 olarak belirtilmelidir.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. İlk sonuç değişkeni, sorgu yürütmeyi tamamladıktan sonra istenmeyen varsayılan değer için denetlenir.The first result variable is checked for the unwanted default value after the query has finished executing. İkinci sonuç değişkeni, DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) varsayılan değer olan 1 ' i belirtmek için kullanılarak elde edilir.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

Açıklamalar

Başvuru ve null yapılabilir türler için varsayılan değer null .The default value for reference and nullable types is null.

LastOrDefaultYöntemi, varsayılan bir değer belirtmek için bir yol sağlamaz.The LastOrDefault method does not provide a way to specify a default value. Dışında bir varsayılan değer belirtmek istiyorsanız default(TSource) , DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) yöntemi örnek bölümünde açıklandığı gibi kullanın.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.

Şunlara uygulanır

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

Böyle bir öğe bulunmazsa bir koşulu karşılayan bir sıranın son öğesini veya varsayılan değeri döndürür.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);
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

Tür Parametreleri

TSource

Öğelerinin türü source .The type of the elements of source.

Parametreler

source
IEnumerable<TSource>

' IEnumerable<T> Dan bir öğe döndürmek için.An IEnumerable<T> to return an element from.

predicate
Func<TSource,Boolean>

Her öğeyi bir koşula göre test etmek için bir işlev.A function to test each element for a condition.

Döndürülenler

TSource

default( TSource ) sıra boşsa veya hiçbir öğe koşul işlevinde testi geçirmezse; Aksi takdirde, koşul işlevindeki testi geçiren son öğe.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.

Özel durumlar

source ya predicate da null .source or predicate is null.

Örnekler

Aşağıdaki kod örneği, LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) bir koşula geçerek nasıl kullanılacağını göstermektedir.The following code example demonstrates how to use LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) by passing in a predicate. Yöntemin ikinci çağrısında, koşulu karşılayan dizide hiçbir öğe yoktur.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]

Açıklamalar

Başvuru ve null yapılabilir türler için varsayılan değer null .The default value for reference and nullable types is null.

Şunlara uygulanır