0

我有以下困境:

我们有两个表: Patient 和 Charges , patOID 是 Charges 表中的外键。

两个表之间的简单连接:

 from itemPat in listPat 
 join itemCharge in listCharge on itemPat.patOID equals itemC.patOID 
 select new 
      {
        itemPat.patOID,
        itemCharge.paid
      }

考虑到一个病人可以有多个收费的面孔,我怎样才能获得某个字段的最大值的 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),
           }
4

1 回答 1

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。

于 2013-01-08T16:11:31.967 回答