我有2张桌子
Patients{
Id
}
PatientsDoctorAssociation{
PatientId,
DoctorId
}
使用LINQ-to-Entities我想通过这两个表的连接建立一个组,我想将DoctorId连接成一个单独的字符串,如下所示:
list = (from a in db.Patients
join b in db.PatientsDoctorAssociation on a.Id equals b.PatientId
group new {A=a,B=b} by b.PatientId into g
select new {
PatientId = g.Key,
DoctorIds = ??
});
有人可以帮助我吗?
答案 0 :(得分:1)
问题是,这是无法转换为SQL的。因此,在检索查询结果后,您需要在内存中执行此操作。您可以使用.AsEnumerable()
方法。
var list = (from a in db.Patients
join b in db.PatientsDoctorAssociation on a.Id equals b.PatientId
group new { A = a, B = b } by b.PatientId
into g
select new
{
PatientId = g.Key,
DoctorIds = g.Select(z => z.B.DoctorId)
}
)
.AsEnumerable()
.Select(x => new
{
PatientId = x.PatientId,
DoctorIds = string.Join(",", x.DoctorIds)
})
.ToArray();
答案 1 :(得分:0)
string.Join可以解决问题。
DoctorIds = string.Join(",", g.Select(p=>p.B.DoctorId))
答案 2 :(得分:0)
我认为这是你正在寻找的东西:
var list = (from a in db.Patients
join b in db.PatientsDoctorAssociation on a.Id equals b.PatientId
select b).toList();
根据您的加入,您可以获得PatientId以及DoctorID。
如果您的意思是字符串操作,我们可以看到您的医生姓名的格式吗?