I was talking to a few people last week and one of them suggested another change in the any/all syntax. The more I looked at it the more I liked it. In fact when I asked a few of people over twitter it seemed everyone else liked it to.

The suggestion was to replace this:

~/Movies/?$filter=any(Actors a: any(a/Awards))

With this:

~/Movies/?$filter=Actors/any(a: a/Awards/any())

There are a couple of things I think are nice about this:

  • It looks a lot like code you might write in something like C# after replace '.'s with '/'s - as is the OData idiom - which hopefully will make it easier to learn.
  • It separates the collection variable (i.e. 'Actors') from the range variable (i.e. 'a'). I think this helps because using the old syntax people might be conditioned by the language they use every day to write: any(Actor a: …) instead of any(Actors a: …)

So I think we should do this.

But what do you think?