score:0

this returns both entities o and od:

var person = (from o in db.persons
              join od in db.osobedetails on o.personid equals od.personid
              where o.personid == id
              select new { persons = o, osebedetails = od }).tolist();

access it something like:

person.persons.personid 

or

person.osebedetails.personid 

or any other existing property.

score:3

you could have an override of your personviewmodel constructor that takes a person object, and set the properties there.

for example, if you had this constructor:

class personviewmodel
{
    public personviewmodel(person person)
    {
        this.personid = person.personid;
        this.email = person.email;
        // ... other properties set here
    }
}

then you could just do:

var person = (from person in db.persons
    join od in db.osobedetails 
    on person.personid equals od.personid
    where person.personid == id
    select new personviewmodel(person))
    .tolist();

Related Query

More Query from same tag