I simplified the model to provide an understandable repro. Real world is far more complicated with 4 successives conditions.
Anyway, I've throw away the linq approach for this query, and written a custom sql to get the int[] rows id I want, then I get fluent objects using .Where(a => result.Contains(a.AccountId))
Thanks for help. This post was mainly to inform you about this sql syntax bug.