Я согласен с Остином, что у тебя действительно должно быть что-то вроде ..
проект публичного класса
{
public int Id {get; задавать; }
// snip...
// Foreign Key
public string ProjectId { get; set; }
// navigation proeprty
public virtual IProjectType ProjectType { get; set; }
}
открытый класс ProjectTypeA: IProjectType
{
public string Id {get; задавать; }
public virtual ICollection<Project> Projects { get; set; }
}
открытый класс ProjectTypeB: IProjectType
{
public string Id {get; задавать; }
public virtual ICollection<Project> Projects { get; set; }
}
Тогда вы можете получить что-то вроде
if (p.ProjectType равен ProjectTypeB)
{}
или по ссылке
var projects = из p в Project.ofType выберите p;