How can I do this, ie keep the mapping separate?
Instead of this:
var people= (from p in db.people select new Person{ id=p.id, name=p.name }).ToList();
I want to do this:
var people= (from p is db.people select new Person { ***MAPTODOMAIN(p)*** }).ToList();
Assuming that Person in your model is a domain class that is not in the Linq2SQL data context and substituting the class AppUser as the class that is in the data context (for clarity as the names were very similar in your example), something like this would work:
which uses a method similar to this somewhere else in the code: