You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LINQ中关联Patients与Studies表并按PatID筛选获取研究名称

解决方法

你的问题出在Join操作的结果只返回了Studies表的对象,导致后续无法通过Patients表的PatID做筛选。可以通过以下几种方式修正:

方式一:保留关联后的完整结果再筛选

在Join时返回包含Patients和Studies的匿名对象,这样就能在Where条件里使用Patients的PatID,最后提取需要的研究名称:

var targetStudyNames = db.Patients
    .Join(db.Studies,
          patient => patient.Studyid,
          study => study.Studyid,
          (patient, study) => new { Patient = patient, Study = study })
    .Where(joinData => joinData.Patient.PatID == PatId)
    .Select(joinData => joinData.Study.StudyName) // 替换成你实际的研究名字段
    .ToList();

方式二:先筛选患者再关联研究(更高效)

先缩小Patients的范围,只保留符合PatID的记录,再和Studies关联,这样能减少关联的数据量:

var targetStudyNames = db.Patients
    .Where(patient => patient.PatID == PatId)
    .Join(db.Studies,
          patient => patient.Studyid,
          study => study.Studyid,
          (patient, study) => study.StudyName) // 直接提取研究名称
    .ToList();

方式三:使用EF导航属性(如果已配置)

如果你的实体类中已经配置了Patients到Studies的导航属性(比如Patient类有ICollection<Study> Studies属性),可以用更简洁的写法:

var targetStudyNames = db.Patients
    .Where(p => p.PatID == PatId)
    .SelectMany(p => p.Studies)
    .Select(s => s.StudyName)
    .ToList();

内容的提问来源于stack exchange,提问作者user10191234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:53:09