Could you share the query you tried with the Customer/Order class setup with associated attributes?
You can capture what SQL is being generated from OrmLite queries using Db.GetLastSql(); which can be useful working out why more complicated queries might be resulting in different than expected behavior.
Saying that, sometimes it is easier to use straight SQL rather than building the query using expressions, or alternatively using views and dedicated view classes.
There’s typically not a good discoverable typed API that could be generically usable for a wide range of sub selects that would be more intuitive than the equivalent custom SQL with typed symbol names.