在Linq中选择“在Innerjoin内”的“最大值”



我面临以下困境:

我们有两个表: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属性将包含具有最大支付值的收费对象,如果没有对患者收费,则为空。

相关内容

  • 没有找到相关文章

最新更新