我们有2张桌子
tbl_members 在此表中,我们拥有所有成员详细信息,如memberId,name,age等
tbl_payment 在此表中,我们提供了所有付款详细信息,如paymentId,memberId,PaymentDate等
我们希望选择所有用户名,并仅显示其上一次付款日期和金额
Name PaymentDate Amount
----------------------------
Row1 12/12/2011 1200
Row2 12/18/2011 100
Row3 12/16/2011 99
Row4 12/08/2011 1500
如何使用linq完成此操作?
答案 0 :(得分:0)
您应该使用分组按用户对付款进行分组,然后通过PaymentDate选择top元素。看看这个问题:Linq - Top value form each group。
tbl_payment.GroupBy(p => p.memberId).Select(g => g.Order(p => p.PaymentDate).First())
答案 1 :(得分:0)
类似的东西:
Members.Select(c => new
{
Member = m,
LastPayment = m.Payments.OrderByDescending(p => p.PaymentDate).FirstOrDefault()
})
.Select(x => new { x.Member.Name, x.LastPayment.PaymentDate, x.Payment.Amount })