我面临以下困境:
我们有两个表:Patient和Charges,patOID是Charges表中的外键。
两个表之间的简单连接:
from itemPat in listPat
join itemCharge in listCharge on itemPat.patOID equals itemC.patOID
select new
{
itemPat.patOID,
itemCharge.paid
}
考虑到一个患者可能有超过1笔费用,我如何才能获得某个字段的最大值的itemCharge(例如已支付(。
我试过什么:
from itemPat in listPat
join itemCharge in listCharge on itemPat.patOID equals itemC.patOID into zzz
select new
{
itemPat.patOID,
MaxPay=zzz.Max(p=>p.paid),
}
此解决方案为我提供了该字段的值,但不允许我访问要引用的记录中的其他字段。我该怎么做?
我想的是:
from itemPat in listPat
join itemCharge in listCharge.Where(p=>Max(p.paid)) on itemPat.patOID equals itemC.patOID into zzz
select new
{
itemPat.patOID,
MaxPay=zzz.Max(p=>p.paid),
}
from itemPat in listPat
join itemCharge in listCharge on itemPat.patOID equals itemC.patOID into g
select new {
itemPat.patOID,
MaxCharge = g.OrderByDescending(p => p.paid).FirstOrDefault()
}
MaxCharge
属性将包含具有最大支付值的收费对象,如果没有对患者收费,则为空。