这是我从多个表中获取数据并将其作为json返回的代码。但是它只允许一对一的关系。
问题:DoctorNote有多个结果集,我在获取数据时遇到问题。错误“序列包含多个元素”。关于我如何获取许多关系结果的任何建议?
var person = (from p in _context.Patients
join e in _context.PatientAllocations
on p.patientID equals e.patientID
join d in _context.DoctorNotes
on p.patientID equals d.patientID
where p.patientID == patientID
select new
{
patient_patientID = p.patientID,
patient_isDeleted = p.isDeleted,
patient_isApproved = p.isApproved,
patient_updateBit = p.updateBit,
patientallocation_caregiverID = e.caregiverID,
patientallocation_doctorID = e.doctorID,
DoctorNote_doctorNoteID = d.doctorNoteID,
DoctorNote_note = d.note,
DoctorNote_createDateTime = d.createDateTime,
DoctorNote_patientID = d.patientID,
DoctorNote_isApproved = d.isApproved,
DoctorNote_isDeleted = d.isDeleted,
}).ToList().SingleOrDefault();
return Ok(person);
答案 0 :(得分:0)
SingleOrDefault
方法抛出了异常,因此根据这一事实,您的查询似乎会返回多个元素。
要收集DoctorNotes
,请从查询中删除SingleOrDefault
方法
答案 1 :(得分:0)
您正在使用SingleOrDefault()
,假设您的查询最多会返回一条记录。您可以尝试FirstOrDefault()
它假设查询可以返回任意数量的记录,您首先需要。
您可能会看到this以了解两者之间的差异
| 0 values | 1 value | > 1 value
FirstOrDefault | Default | First value | First value
SingleOrDefault | Default | First value | Exception
答案 2 :(得分:0)
查询仍会返回3个DocterNotes。 FirstOrDefault位于总查询上,而不是DocterNotes上。
你能添加一个where子句吗? 例如,这应该有效:
where p.patientID == patientID
and DoctorNote_doctorNoteID == 3