0

我有两种 EF 类型,Study 和 Patient。一项研究可以有许多患者。我想返回一个特定研究的患者列表,所以我有一个这样的方法:

public IEnumerable<Patient> GetPatientsByStudyId(int id)
{
    return Context.Studies.Where(e => e.StudyId == id).Select(s => s.Patients).First();
}

这行得通,但它确实看起来很奇怪,最后是 First() 调用。我觉得我做得不对。有没有更清晰或更正确的方法来做到这一点?

4

1 回答 1

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

于 2013-10-22T22:06:14.877 回答