Queryable.Single Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne un élément spécifique unique d'une séquence.
Surcharges
Single<TSource>(IQueryable<TSource>) |
Retourne l’élément unique d’une séquence ou lève une exception si cette séquence ne contient pas un seul élément. |
Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Retourne le seul élément d’une séquence qui satisfait à une condition spécifique ou lève une exception si cette séquence contient plusieurs éléments respectant cette condition. |
Single<TSource>(IQueryable<TSource>)
- Source:
- Queryable.cs
- Source:
- Queryable.cs
- Source:
- Queryable.cs
Retourne l’élément unique d’une séquence ou lève une exception si cette séquence ne contient pas un seul élément.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource Single(System::Linq::IQueryable<TSource> ^ source);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source);
static member Single : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource)) As TSource
Paramètres de type
- TSource
Le type des éléments de source
.
Paramètres
- source
- IQueryable<TSource>
IQueryable<T> duquel retourner le seul élément.
Retours
Seul élément de la séquence d'entrée.
Exceptions
source
a la valeur null
.
Exemples
L’exemple de code suivant montre comment utiliser Single<TSource>(IQueryable<TSource>) pour sélectionner le seul élément d’un tableau.
// 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
*/
' Create two arrays.
Dim fruits1() As String = {"orange"}
Dim fruits2() As String = {"orange", "apple"}
' Get the only item in the first array.
Dim result As String = fruits1.AsQueryable().Single()
' Display the result.
MsgBox("First query: " & result)
Try
' Try to get the only item in the second array.
Dim fruit2 As String = fruits2.AsQueryable().Single()
MsgBox("Second query: " + fruit2)
Catch
MsgBox("Second query: The collection does not contain exactly one element.")
End Try
' This code produces the following output:
' First query: orange
' Second query: The collection does not contain exactly one element.
Remarques
La Single<TSource>(IQueryable<TSource>) méthode génère un MethodCallExpression qui représente l’appel Single<TSource>(IQueryable<TSource>) en tant que méthode générique construite. Il passe ensuite à MethodCallExpression la Execute<TResult>(Expression) méthode du IQueryProvider représenté par la Provider propriété du source
paramètre .
Le comportement de requête qui se produit à la suite de l’exécution d’une arborescence d’expressions qui représente l’appel Single<TSource>(IQueryable<TSource>) dépend de l’implémentation du type du source
paramètre. Le comportement attendu est qu’il retourne le seul élément dans source
.
S’applique à
Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Source:
- Queryable.cs
- Source:
- Queryable.cs
- Source:
- Queryable.cs
Retourne le seul élément d’une séquence qui satisfait à une condition spécifique ou lève une exception si cette séquence contient plusieurs éléments respectant cette condition.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource Single(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member Single : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource
Paramètres de type
- TSource
Le type des éléments de source
.
Paramètres
- source
- IQueryable<TSource>
IQueryable<T> duquel retourner un seul élément.
- predicate
- Expression<Func<TSource,Boolean>>
Fonction permettant de tester un élément pour une condition.
Retours
L'élément unique de la séquence d'entrée qui satisfait à la condition dans predicate
.
Exceptions
source
ou predicate
est null
.
Aucun élément ne satisfait la condition dans predicate
.
- ou -
Plusieurs éléments satisfont à la condition dans predicate
.
- ou -
La séquence source est vide.
Exemples
L’exemple de code suivant montre comment utiliser Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) pour sélectionner le seul élément d’un tableau qui répond à une condition.
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.
*/
Dim fruits() As String = _
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}
' Get the only string in the array whose length is greater than 10.
Dim result As String = _
fruits.AsQueryable().Single(Function(fruit) fruit.Length > 10)
' Display the result.
MsgBox("First Query: " & result)
Try
' Try to get the only string in the array
' whose length is greater than 15.
Dim fruit2 As String = fruits.AsQueryable().Single(Function(fruit) fruit.Length > 15)
MsgBox("Second Query: " + fruit2)
Catch
Dim text As String = "Second Query: The collection does not contain "
text = text & "exactly one element whose length is greater than 15."
MsgBox(text)
End Try
' 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.
Remarques
Cette méthode a au moins un paramètre de type Expression<TDelegate> dont l’argument type est l’un Func<T,TResult> des types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée dans un Expression<TDelegate>.
La Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) méthode génère un MethodCallExpression qui représente l’appel Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) en tant que méthode générique construite. Il passe ensuite à MethodCallExpression la Execute<TResult>(Expression) méthode du IQueryProvider représenté par la Provider propriété du source
paramètre .
Le comportement de requête qui se produit à la suite de l’exécution d’une arborescence d’expressions qui représente l’appel Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dépend de l’implémentation du type du source
paramètre. Le comportement attendu est qu’il retourne le seul élément dans source
qui satisfait à la condition spécifiée par predicate
.