Enumerable.LastOrDefault Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает последний элемент последовательности или значение по умолчанию, если ни одного элемента не найдено.
Перегрузки
LastOrDefault<TSource>(IEnumerable<TSource>, TSource) |
Возвращает последний элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов. |
LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource) |
Возвращает последний элемент последовательности, удовлетворяющей условию, или указанное значение по умолчанию, если такой элемент не найден. |
LastOrDefault<TSource>(IEnumerable<TSource>) |
Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов. |
LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено. |
LastOrDefault<TSource>(IEnumerable<TSource>, TSource)
Возвращает последний элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member LastOrDefault : seq<'Source> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As TSource
Параметры типа
- TSource
Тип элементов source
.
Параметры
- source
- IEnumerable<TSource>
Объект IEnumerable<T>, последний элемент которого требуется возвратить.
- defaultValue
- TSource
Значение по умолчанию, возвращаемое, если последовательность пуста.
Возвращаемое значение
- TSource
defaultValue
Значение , если исходная последовательность пуста; в противном случае — последний элемент в элементе IEnumerable<T>.
Исключения
source
имеет значение null
.
Применяется к
LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)
Возвращает последний элемент последовательности, удовлетворяющей условию, или указанное значение по умолчанию, если такой элемент не найден.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);
static member LastOrDefault : seq<'Source> * Func<'Source, bool> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean), defaultValue As TSource) As TSource
Параметры типа
- TSource
Тип элементов source
.
Параметры
- source
- IEnumerable<TSource>
Объект IEnumerable<T>, из которого требуется возвратить элемент.
- defaultValue
- TSource
Значение по умолчанию, возвращаемое, если последовательность пуста.
Возвращаемое значение
- TSource
defaultValue
, если последовательность пуста или элементы не передают тест в функции предиката; в противном случае последний элемент, который передает тест в функции предиката.
Исключения
Параметр source
или predicate
имеет значение null
.
Применяется к
LastOrDefault<TSource>(IEnumerable<TSource>)
Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
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
Параметры типа
- TSource
Тип элементов source
.
Параметры
- source
- IEnumerable<TSource>
Объект IEnumerable<T>, последний элемент которого требуется возвратить.
Возвращаемое значение
- TSource
default
(TSource
), если исходная последовательность пуста, в противном случае — последний элемент коллекции IEnumerable<T>.
Исключения
source
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать LastOrDefault<TSource>(IEnumerable<TSource>) пустой массив.
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>
Иногда значение не является значением default(TSource)
по умолчанию, которое вы хотите использовать, если коллекция не содержит элементов. Вместо проверки результата для нежелательного значения по умолчанию и последующего изменения его при необходимости можно использовать DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) метод, чтобы указать значение по умолчанию, которое вы хотите использовать, если коллекция пуста. Затем вызовите Last<TSource>(IEnumerable<TSource>) получение последнего элемента. В следующем примере кода используются оба метода для получения значения по умолчанию 1, если коллекция числовых дней месяца пуста. Так как значение по умолчанию для целого числа равно 0, которое не соответствует ни одному дню месяца, значение по умолчанию должно быть указано как 1. Первая переменная результата проверяется на наличие нежелательного значения по умолчанию после завершения выполнения запроса. Вторая результирующий переменная получается с помощью указания DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) значения по умолчанию 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
Комментарии
Значением по умолчанию для ссылочных и типов, допускающих значение NULL, является null
.
Метод LastOrDefault не предоставляет способ указания значения по умолчанию. Если вы хотите указать значение по умолчанию, отличное default(TSource)
DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) от значения, используйте метод, как описано в разделе "Пример".
Применяется к
LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.
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
Параметры типа
- TSource
Тип элементов source
.
Параметры
- source
- IEnumerable<TSource>
Объект IEnumerable<T>, из которого требуется возвратить элемент.
Возвращаемое значение
- TSource
default
(TSource
), если последовательность пуста или ни один ее элемент не прошел проверку функцией предиката, в противном случае — последний элемент, прошедший проверку функцией предиката.
Исключения
Параметр source
или predicate
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) путем передачи предиката. Во втором вызове метода отсутствует элемент последовательности, удовлетворяющей условию.
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]
Комментарии
Значением по умолчанию для ссылочных и типов, допускающих значение NULL, является null
.