2012-02-22 74 views
1

我們有2個表選擇從細節表最後一行爲每個用戶

  1. tbl_members 在這個表中,我們有所有成員細節,如MEMBERID,姓名,年齡等

  2. 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

您應該使用分組通過用戶組支付,然後由它PAYMENTDATE選擇第一項。看看這個問題:Linq - Top value form each group

tbl_payment.GroupBy(p => p.memberId).Select(g => g.Order(p => p.PaymentDate).First()) 
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 })