Méthode DataServiceQuery<TElement>.AddQueryOption
Crée une DataServiceQuery<TElement> avec l'option de requête définie dans l'URI généré par la requête retournée.
Espace de noms : System.Data.Services.Client
Assembly : Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)
Syntaxe
'Déclaration
Public Function AddQueryOption ( _
name As String, _
value As Object _
) As DataServiceQuery(Of TElement)
'Utilisation
Dim instance As DataServiceQuery
Dim name As String
Dim value As Object
Dim returnValue As DataServiceQuery(Of TElement)
returnValue = instance.AddQueryOption(name, _
value)
public DataServiceQuery<TElement> AddQueryOption(
string name,
Object value
)
public:
DataServiceQuery<TElement>^ AddQueryOption(
String^ name,
Object^ value
)
member AddQueryOption :
name:string *
value:Object -> DataServiceQuery<'TElement>
public function AddQueryOption(
name : String,
value : Object
) : DataServiceQuery<TElement>
Paramètres
- name
Type : System.String
Valeur de chaîne qui contient le nom de l'option de chaîne de requête à ajouter.
- value
Type : System.Object
Objet qui contient la valeur de l'option de chaîne de requête.
Valeur de retour
Type : System.Data.Services.Client.DataServiceQuery<TElement>
Nouvelle requête qui inclut l'option de requête demandée, ajoutée à l'URI de la requête fournie.
Notes
Les options de requête sont ajoutées à l'URI obtenu à l'aide de la syntaxe ?name=value&name2=value2…, où le nom mappe directement au paramètre name et le paramètre value est obtenu en appelant ToString sur le paramètre value. Le name commence par $.
La syntaxe non-Services de données WCF ne commence pas par $. Les options de requête non-Services de données WCF peuvent être ajoutées à l'aide de cette méthode. Il est permis d'ajouter la même option de requête deux fois si l'option n'est pas une option de requête Services de données WCF. Si une option de requête déjà présente dans l'URI sous-jacent est ajoutée, une exception est levée.
L'option de requête $select ne peut pas être ajoutée à un URI de requête à l'aide de la méthode AddQueryOption(String, Object). Nous vous recommandons d'utiliser la méthode LINQ Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) afin que le client génère l'option de requête $select dans l'URI de requête.
Exemples
L'exemple suivant affiche une DataServiceQuery<TElement> utilisée avec les appels de méthode AddQueryOption séquentiels pour retourner uniquement les ordres dont le coût de fret est supérieur à $30 et classer les résultats selon la date d'expédition dans l'ordre décroissant.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a query for orders with a Freight value greater than 30
' and that is ordered by the ship date, descending.
Dim selectedOrders As DataServiceQuery(Of Order) = context.Orders _
.AddQueryOption("$filter", "Freight gt 30") _
.AddQueryOption("$orderby", "OrderID desc")
Try
' Enumerate over the results of the query.
For Each order As Order In selectedOrders
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}", _
order.OrderID, order.ShippedDate, order.Freight)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a query for orders with a Freight value greater than 30
// and that is ordered by the ship date, descending.
DataServiceQuery<Order> selectedOrders = context.Orders
.AddQueryOption("$filter", "Freight gt 30")
.AddQueryOption("$orderby", "OrderID desc");
try
{
// Enumerate over the results of the query.
foreach (Order order in selectedOrders)
{
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}",
order.OrderID, order.ShippedDate, order.Freight);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
L'exemple suivant montre comment composer une requête LINQ qui est équivalente à la requête précédente qui a utilisé AddQueryOption.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a query for orders with a Freight value greater than 30
' and that is ordered by the ship date, descending.
Dim selectedOrders = From o In context.Orders _
Where (o.Freight > 30) _
Order By o.ShippedDate Descending _
Select o
Try
' Enumerate over the results of the query.
For Each order As Order In selectedOrders
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}", _
order.OrderID, order.ShippedDate, order.Freight)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a query for orders with a Freight value greater than 30
// and that is ordered by the ship date, descending.
var selectedOrders = from o in context.Orders
where o.Freight > 30
orderby o.ShippedDate descending
select o;
try
{
// Enumerate over the results of the query.
foreach (Order order in selectedOrders)
{
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}",
order.OrderID, order.ShippedDate, order.Freight);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}