Leer en inglés

Compartir a través de


Queryable.Single Método

Definición

Devuelve un único elemento concreto de una secuencia.

Sobrecargas

Single<TSource>(IQueryable<TSource>)

Devuelve el único elemento de una secuencia y produce una excepción si no hay exactamente un elemento en la secuencia.

Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Devuelve el único elemento de una secuencia que cumpla una condición especificada y produce una excepción si existe más de un elemento de este tipo.

Single<TSource>(IQueryable<TSource>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Devuelve el único elemento de una secuencia y produce una excepción si no hay exactamente un elemento en la secuencia.

C#
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source);

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

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

Devoluciones

TSource

El único elemento de la secuencia de entrada.

Excepciones

source es null.

source tiene más de un elemento.

o bien

La secuencia de origen está vacía.

Ejemplos

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

C#
// Create two arrays.
string[] fruits1 = { "orange" };
string[] fruits2 = { "orange", "apple" };

// Get the only item in the first array.
string fruit1 = fruits1.AsQueryable().Single();

Console.WriteLine("First query: " + fruit1);

try
{
    // Try to get the only item in the second array.
    string fruit2 = fruits2.AsQueryable().Single();
    Console.WriteLine("Second query: " + fruit2);
}
catch (System.InvalidOperationException)
{
    Console.WriteLine(
        "Second query: The collection does not contain exactly one element."
        );
}

/*
    This code produces the following output:

    First query: orange
    Second query: The collection does not contain exactly one element
*/

Comentarios

El Single<TSource>(IQueryable<TSource>) método genera un MethodCallExpression objeto que representa llamarse Single<TSource>(IQueryable<TSource>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de la consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Single<TSource>(IQueryable<TSource>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que devuelve el único elemento de source.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.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 2.0, 2.1
UWP 10.0

Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Devuelve el único elemento de una secuencia que cumpla una condición especificada y produce una excepción si existe más de un elemento de este tipo.

C#
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IQueryable<TSource>

IQueryable<T> del que se va a devolver un único elemento.

predicate
Expression<Func<TSource,Boolean>>

Función que va a probar si un elemento satisface una condición.

Devoluciones

TSource

El único elemento de la secuencia de entrada que satisface la condición de predicate.

Excepciones

source o predicate es null.

Ningún elemento satisface la condición de predicate.

o bien

Varios elementos satisfacen la condición de predicate.

o bien

La secuencia de origen está vacía.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) para seleccionar el único elemento de una matriz que cumpla una condición.

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

// Get the only string in the array whose length is greater than 10.
string fruit1 = fruits.AsQueryable().Single(fruit => fruit.Length > 10);

Console.WriteLine("First Query: " + fruit1);

try
{
    // Try to get the only string in the array
    // whose length is greater than 15.
    string fruit2 = fruits.AsQueryable().Single(fruit => fruit.Length > 15);
    Console.WriteLine("Second Query: " + fruit2);
}
catch (System.InvalidOperationException)
{
    Console.Write("Second Query: The collection does not contain ");
    Console.WriteLine("exactly one element whose length is greater than 15.");
}

/*
    This code produces the following output:

    First Query: passionfruit
    Second Query: The collection does not contain exactly one
    element whose length is greater than 15.
 */

Comentarios

Este método tiene al menos un parámetro de tipo cuyo argumento de tipo Expression<TDelegate> es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>

El Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) método genera un MethodCallExpression objeto que representa llamarse Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionExecute<TResult>(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de la consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que devuelve el único elemento de source que satisface la condición especificada por predicate.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.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 2.0, 2.1
UWP 10.0