C# Innerjoin内Linq select中的最大值
我面临以下困境: 我们有两个表:Patient和Charges,patOID是Charges表中的外键 两个表之间的简单联接:C# Innerjoin内Linq select中的最大值,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我面临以下困境: 我们有两个表: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项
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),
}
MaxCharge
属性将包含具有最大已付值的费用对象,如果没有患者费用,则为null
MaxCharge
属性将包含具有最大已付值的charge对象,如果患者没有费用,则为null。U sir应该得到一个cookie!谢谢你应该得到一块饼干!谢谢
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()
}