C# Innerjoin内Linq select中的最大值

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项

我面临以下困境:

我们有两个表: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),
           }
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()
}