Если в HobbyReference никогда не бывает более одной записи для каждого имени, и если это используется для запросов (т.е. не для обновления), то вы можете сделать что-то вроде
public class AmendedHobby
{
public int Id { get; set ;}
public string Name{ get; set ;}
}
public IQueryable<AmendedHobby> GetAmendedHobbies()
{
return
(from h in Hobby
join hr in HobbyRefernce on h.Name equals hr.Name into hrResults
from hr in hrResults.DefaultIfEmpty()
select new { h.id , Name = hr.Hobby_Good.Name ?? r.Name}
}
Это должно позволить вам выполнять такие подзапросы, как
(from r in GetAmendedHobbies() where r.Name == "Football" select r)
Он вернет класс AmendHobby, который, поскольку он не связан с существующей таблицей, означает, что изменения не будут сохранены обратно в базу данных.