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

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


Enumerable.Single Метод

Определение

Возвращает единственный конкретный элемент последовательности.

Перегрузки

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

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

Single<TSource>(IEnumerable<TSource>)

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

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

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

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

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

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

TSource

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

Параметры

source
IEnumerable<TSource>

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

predicate
Func<TSource,Boolean>

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

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

TSource

Единственный элемент входной последовательности, удовлетворяющий условию.

Исключения

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

Ни один элемент не удовлетворяет условию предиката predicate.

-или-

Условию предиката predicate удовлетворяет более одного элемента.

-или-

Исходная последовательность пуста.

Примеры

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

C#
string[] fruits = { "apple", "banana", "mango",
                      "orange", "passionfruit", "grape" };

string fruit1 = fruits.Single(fruit => fruit.Length > 10);

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 passionfruit
*/

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

C#
string fruit2 = null;

try
{
    fruit2 = fruits.Single(fruit => fruit.Length > 15);
}
catch (System.InvalidOperationException)
{
    Console.WriteLine(@"The collection does not contain exactly
                    one element whose length is greater than 15.");
}

Console.WriteLine(fruit2);

// This code produces the following output:
//
// The collection does not contain exactly
// one element whose length is greater than 15.

Комментарии

Метод Single<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) создает исключение, если входная последовательность не содержит совпадающего элемента. Чтобы вместо этого возвращать, null если соответствующий элемент не найден, используйте .SingleOrDefault

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

.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

Single<TSource>(IEnumerable<TSource>)

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

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

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

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

TSource

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

Параметры

source
IEnumerable<TSource>

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

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

TSource

Единственный элемент входной последовательности.

Исключения

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

Входная последовательность содержит более одного элемента.

-или-

Входная последовательность пуста.

Примеры

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

C#
string[] fruits1 = { "orange" };

string fruit1 = fruits1.Single();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/

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

C#
string[] fruits2 = { "orange", "apple" };
string fruit2 = null;

try
{
    fruit2 = fruits2.Single();
}
catch (System.InvalidOperationException)
{
    Console.WriteLine("The collection does not contain exactly one element.");
}

Console.WriteLine(fruit2);

/*
 This code produces the following output:

 The collection does not contain exactly one element.
*/

Комментарии

Метод Single<TSource>(IEnumerable<TSource>) создает исключение, если входная последовательность пуста. Чтобы вместо этого возвращатьnull, когда входная последовательность пуста, используйте .SingleOrDefault

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

.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