OData сама по себе не ограничивает длину URL, но, как вы заметили, большинство клиентов и серверов делают. Поэтому обычно полезно не создавать URL-адреса слишком долго.
Проблема, на которую вы ссылаетесь (реализация оператора Contains или чего-то подобного), имеет два возможных обходных пути:
1) Используйте сервисную операцию для обработки такого запроса для вас. Вы можете передать несколько входных значений, закодированных в виде строки или чего-то в этом роде, или, возможно, сервисная операция в любом случае знает об этом заранее.
2) Используйте длинный фильтр $, но отправьте запрос в запросе $ batch. Преимущество в том, что лимит на URL намного больше, и очень маловероятно, что вы его достигнете. Недостатком является то, что даже если вы пытаетесь выполнить GET-запрос, из-за $ batch он отправляется как POST-запрос по сети и, следовательно, он не будет кэшироваться.