Applies To: OData Core Lib V7
The IN operator is a new feature in OData 4.01 that enables a shorthand way of writing multiple EQ expressions joined by OR. For example,
GET /service/Products?$filter=Name eq 'Milk' or Name eq 'Cheese' or Name eq 'Donut'
GET /service/Products?$filter=Name in ('Milk', 'Cheese', 'Donut')
Of the binary expression invoking IN, the left operand must be a single value and the right operand must be a comma-separated list of primitive values or a single expression that resolves to a collection; the expression returns true if the left operand is a member of the right operand.
IN operator is used in expressions that resolve to a Boolean. Common use would be with
$filter and it can also be used for
$orderby. See test cases for examples of supported scenarios.
Having successfully parsed the
$filter expression, the
FilterClause will have an
Expression member which can be casted to an
InNode object. The members of InNode
CollectionNode respectively. From there, it is up to the user to do whatever they would like with the parsed information from the
InNode. As shown in the code samples, it may be in the user's best interest to downcast the
CollectionNode to subclasses to access additional properties.