我有以下两难困境:
我们有两个表:患者和费用,patOID是费用表中的外键。
两个表之间的简单连接:
from itemPat in listPat
join itemCharge in listCharge on itemPat.patOID equals itemC.patOID
select new
{
itemPat.patOID,
itemCharge.paid
}
考虑到患者可以收取超过1次费用的面孔,我如何才能获得某个字段的最大价值(例如付费)。
我尝试了什么:
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),
}
答案 0 :(得分:3)
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
属性将包含具有最高付费值的费用对象,如果没有患者收费,则为null。