DataServiceQuery<TElement>.AddQueryOption-Methode
Erstellt eine neue DataServiceQuery<TElement> mit der Abfrageoption, die im von der zurückgegebenen Abfrage generierten URI festgelegt ist.
Namespace: System.Data.Services.Client
Assembly: Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)
Syntax
'Declaration
Public Function AddQueryOption ( _
name As String, _
value As Object _
) As DataServiceQuery(Of TElement)
'Usage
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>
Parameter
- name
Typ: System.String
Der Zeichenfolgenwert, der den Namen der hinzuzufügenden Abfragezeichenfolgenoption enthält.
- value
Typ: System.Object
Das Objekt, das den Wert der Abfragezeichenfolgenoption enthält.
Rückgabewert
Typ: System.Data.Services.Client.DataServiceQuery<TElement>
Eine neue Abfrage, die die angeforderte Abfrageoption enthält, die an den URI der angegebenen Abfrage angefügt wurde.
Hinweise
Dem resultierenden URI werden die Abfrageoptionen mit der ?name=value&name2=value2…-Syntax hinzugefügt, wobei dem Parameter name der Name direkt zugeordnet wird. value wird durch Aufrufen von ToString für den Parameter value ermittelt. Der name beginnt mit $.
Nicht-WCF Data Services-Syntax beginnt nicht mit $. Mit dieser Methode können Nicht-WCF Data Services-Abfrageoptionen hinzugefügt werden. Sie können die gleiche Abfrageoption zweimal hinzuzufügen, wenn die Option keine WCF Data Services-Abfrageoption ist. Wenn eine Abfrageoption hinzugefügt wird, die bereits im zu Grunde liegenden URI vorhanden ist, wird eine Ausnahme ausgelöst.
Die $select-Abfrageoption kann einem Abfrage-URI nicht mit der AddQueryOption(String, Object)-Methode hinzugefügt werden. Es wird empfohlen, die LINQ-Methode Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) zu verwenden, wobei der Client die Abfrageoption $select im Anforderungs-URI erstellt.
Beispiele
Im folgenden Beispiel wird eine DataServiceQuery<TElement> gezeigt, die mit sequenziellen AddQueryOption-Methodenaufrufen verwendet wird, um nur Bestellungen mit Frachtkosten von mehr als 30 Dollar zurückzugeben und die Ergebnisse nach dem Lieferdatum in absteigender Reihenfolge zu sortieren.
' 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);
}
Im folgenden Beispiel wird gezeigt, wie eine LINQ-Abfrage verfasst wird, die der vorherigen Abfrage entspricht, in der AddQueryOption verwendet wurde.
' 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);
}