我有两种EF类型,研究和患者。一项研究可以有很多患者。我想从特定的研究中返回一份患者名单,所以我有一个这样的方法:
public IEnumerable<Patient> GetPatientsByStudyId(int id)
{
return Context.Studies.Where(e => e.StudyId == id).Select(s => s.Patients).First();
}
这样可行,但看起来很奇怪,最后调用First()。我觉得我做得不对。是否有更清晰或更正确的方法来做到这一点?
答案 0 :(得分:0)
你可以这样写:
public IEnumerable<Patient> GetPatientsByStudyId(int id)
{
return Context.Studies.Single(e => e.StudyId == id).Patients;
}
这将获得所需的研究,然后选择与该研究相关的所有患者。当然,您需要确保id参数有效。以下代码将防止发生一些不必要的异常:
public IEnumerable<Patient> GetPatientsByStudyId(int id)
{
Study selectedStudy = Context.Studies.SingleOrDefault(e => e.StudyId == id);
return selectedStudy == null ? null : selectedStudy.Patients;
}
(如果您愿意,可以Enumerable.Empty<Patient>()
代替null