public abstract class Papel{ public virtual int Codigo { get; set; }
}
public class Colaborador : Papel{ public virtual Empresa Empresa { get; set; }}
public class PrestadorServico : Papel{ public virtual Empresa Empresa { get; set; }}
public class ControleAcesso{ public virtual int Codigo { get; set; }
public virtual Papel Papel { get; set; }
}
var controleAcesso = controleAcesso.Where(ca => (ca.Papel is Colaborador && ((Colaborador)ca.Papel).Empresa.Codigo == empresa)
|| (ca.Papel is PrestadorServico && ((PrestadorServico)ca.Papel).Empresa.Codigo == empresa)
);