Мы используем параметр системного запроса $ 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 экв 'ABCD' и эквалайзер 'US'
В приведенном выше случае пользователь ввел следующие значения: CustomerID => 'ABCD' и Country => 'US'
Мой вопрос касается обработки нулевых значений в фильтре OData $. Если пользователь не вводит какое-либо значение для CustomerID, мы хотим выбрать всех клиентов из определенной страны.
В случае sql это будет что-то вроде:
выберите * из Клиентов, где ((CustomerID = @InCustomerID) или (@CustomerID имеет значение null)) и (Страна = @Country).
По сути, как обрабатывать нулевые или пустые значения, чтобы определенный предикат в логическом условии всегда был верным.
Включает ли эта опция фильтрацию OData?