Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Enumerable.SingleOrDefault<TSource> (Método) (IEnumerable<TSource>)

 

Devuelve el único elemento de una secuencia o un valor predeterminado si la secuencia está vacía; este método produce una excepción si hay más de un elemento en la secuencia.

Espacio de nombres:   System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static TSource SingleOrDefault<TSource>(
	this IEnumerable<TSource> source
)

Parámetros

source

IEnumerable<T> cuyo único elemento se va a devolver.

Valor devuelto

Type: TSource

El único elemento de la secuencia de entrada o default(TSource) si la secuencia no contiene ningún elemento.

Parámetros de tipo

TSource

Tipo de los elementos de source.

Exception Condition
ArgumentNullException

source es null.

InvalidOperationException

La secuencia de entrada contiene más de un elemento.

El valor predeterminado de los tipos de referencia y los tipos que aceptan valores NULL es null.

El método SingleOrDefault no proporciona una manera de especificar un valor predeterminado.Si desea especificar un valor predeterminado distinto de default(TSource), utilice el método DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) tal y como se describe en la sección Ejemplo.

En el ejemplo de código siguiente se muestra cómo se utiliza SingleOrDefault<TSource>(IEnumerable<TSource>) para seleccionar el único elemento de una matriz.

string[] fruits1 = { "orange" };

string fruit1 = fruits1.SingleOrDefault();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/

En el ejemplo de código siguiente se muestra que SingleOrDefault<TSource>(IEnumerable<TSource>) devuelve un valor predeterminado cuando la secuencia no contiene exactamente un elemento.

string[] fruits2 = { };

string fruit2 = fruits2.SingleOrDefault();

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

/*
 This code produces the following output:

 No such string!
*/

A veces, el valor de default(TSource) no es el valor predeterminado que se desea utilizar si la colección no contiene ningún elemento.En lugar de comprobar el resultado para ver si su valor predeterminado no es el deseado y cambiarlo a continuación si es necesario, puede utilizar el método DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) para especificar el valor predeterminado que desee utilizar si la colección está vacía.A continuación, llame a Single<TSource>(IEnumerable<TSource>) para obtener el elemento.En el ejemplo de código siguiente se utilizan ambas técnicas para obtener el valor predeterminado 1 si una colección de números de página está vacía.Dado que el valor predeterminado de un entero es 0, que normalmente no se corresponde con un número de página válido, el valor predeterminado debe especificarse como 1.Se comprueba la primera variable del resultado para ver si el valor predeterminado no es el deseado tras finalizar la ejecución de la consulta.La segunda variable del resultado se obtiene mediante DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) para especificar el valor predeterminado 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
*/

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 3.5
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: