Параметры фильтра OData (обработка нулевых или пустых значений)

Мы используем параметр системного запроса $ filter в OData для выполнения фильтров, в которых значение фильтра отправляется во время выполнения.

В качестве примера URL OData будет выглядеть так:

http://services.odata.org/Northwind/Northwind.svc/Customers ? $ Filter = CustomerID eq @InCustomerID и Country eq @InCountry

где @InCustomerID и @InCountry - входные значения для равного фильтра.

Во время выполнения, когда пользователь вводит какое-либо значение для идентификатора клиента (например, «ABCD»), мы заменяем @InCustomerID на «ABCD»

Во время выполнения запрос будет выглядеть следующим образом:

http: // services.odata.org/Northwind/Northwind.svc/Customers?$filter=CustomerID eq 'ABCD' и Country eq 'US'

В приведенном выше случае пользователь ввел следующие значения: CustomerID => ' ABCD 'и Country =>' US '

Мой вопрос касается обработки нулевых значений в фильтре OData $. Если пользователь не вводит никакого значения для CustomerID, тогда мы хотим выбрать всех клиентов из определенной страны.

В случае sql это будет примерно так:

выберите * из клиентов, где ((CustomerID = @InCustomerID) или (@CustomerID имеет значение null)) и (Country = @Country).

По сути, как обрабатывать нулевые или пустые значения, чтобы конкретный предикат в логическом условии всегда был истинным.

Включает ли фильтрация OData эту опцию?

23
задан mhu 4 June 2013 в 12:55
поделиться