Прочитать на английском

Поделиться через


Enumerable.LastOrDefault Метод

Определение

Возвращает последний элемент последовательности или значение по умолчанию, если ни одного элемента не найдено.

Перегрузки

LastOrDefault<TSource>(IEnumerable<TSource>)

Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.

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

Возвращает последний элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает последний элемент последовательности, удовлетворяющий условию, или указанное значение по умолчанию, если такой элемент не найден.

LastOrDefault<TSource>(IEnumerable<TSource>)

Исходный код:
Last.cs
Исходный код:
Last.cs
Исходный код:
Last.cs

Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

C#
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
C#
public static TSource? LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Объект IEnumerable<T>, последний элемент которого требуется возвратить.

Возвращаемое значение

TSource

default(TSource), если исходная последовательность пуста, в противном случае — последний элемент коллекции IEnumerable<T>.

Исключения

source имеет значение null.

Примеры

В следующем примере кода показано, как использовать LastOrDefault<TSource>(IEnumerable<TSource>) пустой массив.

C#
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>
*/

Иногда значение default(TSource) не является значением по умолчанию, которое требуется использовать, если коллекция не содержит элементов. Вместо того чтобы проверять результат на наличие нежелательного значения по умолчанию и при необходимости изменять его, можно использовать DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) метод , чтобы указать значение по умолчанию, которое вы хотите использовать, если коллекция пуста. Затем вызовите Last<TSource>(IEnumerable<TSource>) , чтобы получить последний элемент. В следующем примере кода используются оба метода для получения значения по умолчанию 1, если коллекция числовых дней месяца пуста. Поскольку значение по умолчанию для целого числа равно 0, которое не соответствует ни одному дню месяца, значение по умолчанию должно быть указано как 1. Первая переменная результата проверяется на наличие нежелательного значения по умолчанию после завершения выполнения запроса. Вторая переменная результата получается с помощью DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) для указания значения по умолчанию 1.

C#
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
*/

Комментарии

Значением по умолчанию для ссылочных типов и типов, допускающих значение NULL, является null.

Метод LastOrDefault не позволяет указать значение по умолчанию. Если вы хотите указать значение по умолчанию, отличное от default(TSource), используйте DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) метод , как описано в разделе Пример.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
Last.cs
Исходный код:
Last.cs
Исходный код:
Last.cs

Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.

C#
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
C#
public static TSource? LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Объект IEnumerable<T>, из которого требуется возвратить элемент.

predicate
Func<TSource,Boolean>

Функция для проверки каждого элемента на соответствие условию.

Возвращаемое значение

TSource

default(TSource), если последовательность пуста или ни один ее элемент не прошел проверку функцией предиката, в противном случае — последний элемент, прошедший проверку функцией предиката.

Исключения

Параметр source или predicate имеет значение null.

Примеры

В следующем примере кода показано, как использовать LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) , передав предикат. Во втором вызове метода в последовательности нет элемента, удовлетворяющего условию.

C#
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>.
*/

Комментарии

Значением по умолчанию для ссылочных типов и типов, допускающих значение NULL, является null.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
Last.cs
Исходный код:
Last.cs
Исходный код:
Last.cs

Возвращает последний элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов.

C#
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Объект IEnumerable<T>, последний элемент которого требуется возвратить.

defaultValue
TSource

Значение по умолчанию, возвращаемое, если последовательность пуста.

Возвращаемое значение

TSource

defaultValue Значение , если исходная последовательность пуста; в противном случае — последний элемент в IEnumerable<T>.

Исключения

source имеет значение null.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9

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

Исходный код:
Last.cs
Исходный код:
Last.cs
Исходный код:
Last.cs

Возвращает последний элемент последовательности, удовлетворяющий условию, или указанное значение по умолчанию, если такой элемент не найден.

C#
public static TSource LastOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Объект IEnumerable<T>, из которого требуется возвратить элемент.

predicate
Func<TSource,Boolean>

Функция для проверки каждого элемента на соответствие условию.

defaultValue
TSource

Значение по умолчанию, возвращаемое, если последовательность пуста.

Возвращаемое значение

TSource

defaultValue Значение , если последовательность пуста или ни один из элементов не прошел проверку в функции предиката; в противном случае — последний элемент, который проходит проверку в функции предиката.

Исключения

Параметр source или predicate имеет значение null.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9