我需要找到所有未見過病人的醫生。我有表格:Doctor,Patient和DrPatientXref。我有工作的SQL查詢,但我無法弄清楚如何使這是一個Linq SQL查詢。將此查詢轉換爲Linq至SQL
select distinct Doctors.FirstName, Doctors.LastName, Doctors.DoctorId
from Doctors, DrPatientXref
where Doctors.DoctorId Not in
(
select DrPatientXref.DoctorId
from DrPatientXref
where DrPatientXref.PatientId = 23)
這是我的裂紋它(這是痛苦的錯誤):
var results = from d in db.Doctors
from x in db.DrPatientXrefs
where
(d.DoctorId == x.DoctorId && x.PatientId != patientId)
select new {
d.DoctorId, d.FirstName, d.LastName
};
var listDrFullName = new List<DoctorFullName>();
foreach (var dr in results) {
DoctorFullName drFullName = new DoctorFullName();
drFullName.FullName = dr.LastName + ", " + dr.FirstName;
drFullName.DoctorId = dr.DoctorId;
listDrFullName.Add(drFullName);
}
return listDrFullName;
的解決方案改變了變量 「結果」。那就是:
var results = db.Doctors.Except(
(from x in db.DrPatientXrefs
join d in db.Doctors on x.DoctorId equals d.DoctorId
where x.PatientId == patientId // probably not needed...
select d)
).ToList();
就是這樣。只需稍作調整即可: var results = db.Doctors.Except( (從db.DrPatientXrefs中的x起) 在db.Doctors中加入d在x.DoctorId上等於d.DoctorId 其中x.PatientId == patientId //可能不需要... select d) ).ToList(); – user995727