Enumerable.SingleOrDefault Enumerable.SingleOrDefault Enumerable.SingleOrDefault Enumerable.SingleOrDefault Method

Definição

Retornará um único elemento específico de uma sequência ou um valor padrão se esse elemento não for encontrado.Returns a single, specific element of a sequence, or a default value if that element is not found.

Sobrecargas

SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>)

Retorna o único elemento de uma sequência ou um valor padrão se a sequência é vazia; esse método gera uma exceção se há mais de um elemento na sequência.Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.

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

Retorna o único elemento de uma sequência que satisfaz uma condição especificada ou um valor padrão se esse elemento não existir. Esse método lança uma exceção se mais de um elemento satisfizer a condição.Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition.

SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>)

Retorna o único elemento de uma sequência ou um valor padrão se a sequência é vazia; esse método gera uma exceção se há mais de um elemento na sequência.Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
static member SingleOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource

Parâmetros de tipo

TSource

O tipo dos elementos de source.The type of the elements of source.

Parâmetros

source
IEnumerable<TSource>

Um IEnumerable<T> do qual o único elemento será retornado.An IEnumerable<T> to return the single element of.

Retornos

TSource TSource TSource TSource

O único elemento da sequência de entrada, ou default(TSource), se a sequência não contiver elementos.The single element of the input sequence, or default(TSource) if the sequence contains no elements.

Exceções

A sequência de entrada contém mais de um elemento.The input sequence contains more than one element.

Exemplos

O exemplo de código a seguir demonstra como usar SingleOrDefault<TSource>(IEnumerable<TSource>) para selecionar o único elemento de uma matriz.The following code example demonstrates how to use SingleOrDefault<TSource>(IEnumerable<TSource>) to select the only element of an array.

string[] fruits1 = { "orange" };

string fruit1 = fruits1.SingleOrDefault();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/
' Create an array that contains one item.
Dim fruits1() As String = {"orange"}

' Get the single item in the array or else a default value.
Dim result As String = fruits1.SingleOrDefault()

' Display the result.
MsgBox("First array: " & result)

O exemplo de código a seguir demonstra que SingleOrDefault<TSource>(IEnumerable<TSource>) retorna um valor padrão quando a sequência não contém exatamente um elemento.The following code example demonstrates that SingleOrDefault<TSource>(IEnumerable<TSource>) returns a default value when the sequence does not contain exactly one element.

string[] fruits2 = { };

string fruit2 = fruits2.SingleOrDefault();

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/
' Create an empty array.
Dim fruits2() As String = {}

result = String.Empty

' Get the single item in the array or else a default value.
result = fruits2.SingleOrDefault()

' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(result), "No single item found", result)
MsgBox("Second array: " & output)

' This code produces the following output:
'
' First array: orange
' Second array: No single item found

Às vezes, o valor de default(TSource) não é o valor padrão que você deseja usar se a coleção não contiver elementos.Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. Em vez de verificar o resultado para o valor padrão indesejado e, em seguida, alterando-se necessário, você pode usar o DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) método para especificar o valor padrão que você deseja usar, se a coleção está vazia.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. Em seguida, chame Single<TSource>(IEnumerable<TSource>) para obter o elemento.Then, call Single<TSource>(IEnumerable<TSource>) to obtain the element. O exemplo de código a seguir usa ambas as técnicas para obter um valor padrão de 1, se uma coleção de números de página está vazia.The following code example uses both techniques to obtain a default value of 1 if a collection of page numbers is empty. Porque o valor padrão para um número inteiro é 0, que não é um número válido de página geralmente, o valor padrão deve ser especificado como 1 em vez disso.Because the default value for an integer is 0, which is not usually a valid page number, the default value must be specified as 1 instead. A primeira variável de resultado é verificada para o valor padrão indesejados após a conclusão da consulta em execução.The first result variable is checked for the unwanted default value after the query has finished executing. A segunda variável de resultado é obtida usando DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) para especificar um valor padrão de 1.The second result variable is obtained by using DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) to specify a default value of 1.

int[] pageNumbers = { };

// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.SingleOrDefault();
if (pageNumber1 == 0)
{
    pageNumber1 = 1;
}
Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

/*
 This code produces the following output:

 The value of the pageNumber1 variable is 1
 The value of the pageNumber2 variable is 1
*/
Dim pageNumbers() As Integer = {}

' Setting the default value to 1 after the query.
Dim pageNumber1 As Integer = pageNumbers.SingleOrDefault()
If pageNumber1 = 0 Then
    pageNumber1 = 1
End If
MsgBox(String.Format("The value of the pageNumber1 variable is {0}", pageNumber1))

' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
MsgBox(String.Format("The value of the pageNumber2 variable is {0}", pageNumber2))

' This code produces the following output:

' The value of the pageNumber1 variable is 1
' The value of the pageNumber2 variable is 1

Comentários

O valor padrão para referência e tipos que permitem valor nulos é null.The default value for reference and nullable types is null.

O SingleOrDefault método não fornece uma maneira de especificar um valor padrão.The SingleOrDefault method does not provide a way to specify a default value. Se você quiser especificar um valor padrão diferente de default(TSource), use o DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) método conforme descrito na seção de exemplo.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.

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

Retorna o único elemento de uma sequência que satisfaz uma condição especificada ou um valor padrão se esse elemento não existir. Esse método lança uma exceção se mais de um elemento satisfizer a condição.Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource

Parâmetros de tipo

TSource

O tipo dos elementos de source.The type of the elements of source.

Parâmetros

source
IEnumerable<TSource>

Um IEnumerable<T> do qual retornar um único elemento.An IEnumerable<T> to return a single element from.

predicate
Func<TSource,Boolean>

Uma função para testar um elemento em relação a uma condição.A function to test an element for a condition.

Retornos

TSource TSource TSource TSource

O único elemento da sequência de entrada que atende à condição ou default(TSource) se esse elemento não for encontrado.The single element of the input sequence that satisfies the condition, or default(TSource) if no such element is found.

Exceções

source ou predicate é null.source or predicate is null.

Mais de um elemento satisfaz a condição na predicate.More than one element satisfies the condition in predicate.

Exemplos

O exemplo de código a seguir demonstra como usar SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) para selecionar o único elemento de uma matriz que satisfaz uma condição.The following code example demonstrates how to use SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to select the only element of an array that satisfies a condition.

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

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

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 passionfruit
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the single item in the array whose length is > 10.
Dim fruit1 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 10)

' Display the result.
MsgBox("First array: " & fruit1)

O exemplo de código a seguir demonstra que SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) retorna um valor padrão quando a sequência não contém exatamente um elemento que satisfaz a condição.The following code example demonstrates that SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) returns a default value when the sequence does not contain exactly one element that satisfies the condition.

string fruit2 =
    fruits.SingleOrDefault(fruit => fruit.Length > 15);

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/
' Get the single item in the array whose length is > 15.
Dim fruit2 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 15)

' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(fruit2), "No single item found", fruit2)
MsgBox("Second array: " & output)

' This code produces the following output:
'
' First array: passionfruit
' Second array: No single item found

Comentários

O valor padrão para referência e tipos que permitem valor nulos é null.The default value for reference and nullable types is null.

Aplica-se a