-
Notifications
You must be signed in to change notification settings - Fork 202
Including standard functions in search criteria
OData protocol supports standard functions that can be included in search criteria.
Untyped syntax
var product = client .For("Products") .Filter("tolower(ProductName)+eq+%27chai%27") .FindEntry(); Assert.Equal("Chai", product["ProductName"]);
Typed syntax
var product = client .For<Products>() .Filter(x => x.ProductName.ToLower() == "chai") .FindEntry(); Assert.Equal("Chai", product.ProductName);
Dynamic syntax var x = ODataFilter.Expression; var product = client .For(x.Products) .Filter(x.ProductName.ToLower() == "chai") .FindEntry(); Assert.Equal("Chai", product.ProductName); Request URI: GET Products?$filter=tolower(ProductName)+eq+%27chai%27
Untyped syntax
var products = client .For("Products") .Filter("length(ProductName)+eq+4") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var x = ODataFilter.Expression; var products = client .For<Products>() .Filter(x => x.ProductName.Length() == 4) .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.Length() == 4) .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=length(ProductName)+eq+4
Untyped syntax
var products = client .For("Products") .Filter("startswith(ProductName%2c%27Ch%27)+eq+true") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var products = client .For<Products>() .Filter(x => x.ProductName.StartsWith("Ch") == true) .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.StartsWith("Ch") == true) .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=startswith(ProductName%2c%27Ch%27)+eq+true
Untyped syntax
var products = client .For("Products") .Filter("substringof(%27ai%27%2cProductName)+eq+true") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var products = client .For<Products>() .Filter(x => x.ProductName.Contains("ai") == true) .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.Contains("ai") == true) .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=substringof(%27ai%27%2cProductName)+eq+true
Untyped syntax
var products = client .For("Products") .Filter("substringof(%27ai%27%2cProductName)+eq+false") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var products = client .For<Products>() .Filter(x => x.ProductName.Contains("ai") == false) .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.Contains("ai") == false) .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=substringof(%27ai%27%2cProductName)+eq+false
Untyped syntax
var products = client .For("Products") .Filter("indexof(ProductName%2c%27ai%27)+eq+2") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var products = client .For<Products>() .Filter(x => x.ProductName.IndexOf("ai") == 2) .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.IndexOf("ai") == 2) .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=indexof(ProductName%2c%27ai%27)+eq+2
Alternative syntax for finding products with the name containing the given string at the specified position
Untyped syntax
var products = client .For("Products") .Filter("substring(ProductName%2c1)+eq+%27hai%27") .FindEntries(); Assert.NotEmpty(products);
Typed syntax
var products = client .For<Products>() .Filter(x => x.ProductName.Substring(1) == "hai") .FindEntries(); Assert.NotEmpty(products);
Dynamic syntax
var x = ODataFilter.Expression; var products = client .For(x.Products) .Filter(x.ProductName.Substring(1) == "hai") .FindEntries(); Assert.NotEmpty(products);
Request URI: GET Products?$filter=substring(ProductName%2c1)+eq+%27hai%27
See also:
Retrieving data
OData URI conventions