For a query that internally projects into an range variable of a type which is not recognized as either an entity type or an anonymous type, any subsequent query operators is evaluated in memory even if the range variable is not present in the final projection.
In theory we could recognize more common cases in which intermediary types can be eliminated from the query. This can improve how we process queries with nominal types that are not anonymous types (e.g. DTOs), property bags, tuples, etc.
In some of those cases we would need to have knowledge of specific getter and setter patterns to be able to correlate different RHS and LHS expressions representing the same members.
cc @anpete
For a query that internally projects into an range variable of a type which is not recognized as either an entity type or an anonymous type, any subsequent query operators is evaluated in memory even if the range variable is not present in the final projection.
In theory we could recognize more common cases in which intermediary types can be eliminated from the query. This can improve how we process queries with nominal types that are not anonymous types (e.g. DTOs), property bags, tuples, etc.
In some of those cases we would need to have knowledge of specific getter and setter patterns to be able to correlate different RHS and LHS expressions representing the same members.
cc @anpete