0
我有兩種EF類型,Study和Patient。一項研究可以有很多患者。我想從一個特定的研究返回的患者名單,所以我有這樣的方法:選擇子列表?
public IEnumerable<Patient> GetPatientsByStudyId(int id)
{
return Context.Studies.Where(e => e.StudyId == id).Select(s => s.Patients).First();
}
這工作,但它肯定看起來怪異,並在最後,首先()調用。我覺得我做得不對。有沒有更清晰或更正確的方法來做到這一點?
其實我有查詢不會返回所有患者的名單(有4個在我的情況),所以它的行爲和預期的一樣 - 但是它是讓我爲我感到困惑的First()。你的語法也不適合我。沒有'Select()'關閉'Single()'。也許這是因爲我使用EF6? – Nicros
我剛剛編輯了我的帖子,確實是一個錯誤。它現在應該工作。在您最初的查詢中,Context.Studies.Where(e => e.StudyId == id).Select(s => s.Patients)會爲您提供一組患者集合,因爲Select不會壓扁集合(與SelectMany不同) 。以此查詢的First()元素爲您提供患者集合,這就是您仍然可以獲得所需結果的原因。 –
這工作,感謝編輯。我必須添加的唯一東西是患者包括 - 所以'上下文。研究。包括(「患者」)。單等。這是因爲我的EF延遲加載設置。謝謝! – Nicros