Sql server 从详细信息表中为每个用户选择最后一行
我们有两张桌子 tbl_成员 在此表中,我们有所有成员的详细信息,如成员ID、姓名、年龄等 tbl_付款 在这个表中,我们有他们的所有付款详细信息,如paymentId、memberId、PaymentDate等 我们希望选择所有用户名并仅显示其上次付款日期和金额Sql server 从详细信息表中为每个用户选择最后一行,sql-server,linq,Sql Server,Linq,我们有两张桌子 tbl_成员 在此表中,我们有所有成员的详细信息,如成员ID、姓名、年龄等 tbl_付款 在这个表中,我们有他们的所有付款详细信息,如paymentId、memberId、PaymentDate等 我们希望选择所有用户名并仅显示其上次付款日期和金额 Name PaymentDate Amount ---------------------------- Row1 12/12/2011 1200 Row2 12/18/2011 100 Row3 12
Name PaymentDate Amount
----------------------------
Row1 12/12/2011 1200
Row2 12/18/2011 100
Row3 12/16/2011 99
Row4 12/08/2011 1500
如何使用linq实现这一点?您应该使用分组按用户对付款进行分组,然后按付款日期选择顶部元素。看看这个问题: 比如:
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 })
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 })