Sql server 从详细信息表中为每个用户选择最后一行

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

我们有两张桌子

tbl_成员 在此表中,我们有所有成员的详细信息,如成员ID、姓名、年龄等

tbl_付款 在这个表中,我们有他们的所有付款详细信息,如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实现这一点?

您应该使用分组按用户对付款进行分组,然后按付款日期选择顶部元素。看看这个问题:

比如:

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 })