2013-09-25 318 views
3

我有實體稱爲UserPaymentHistory Id,UserId,Price,PaymentDate。 我需要獲取最後一個PaymentDate的用戶。Linq查詢與子查詢

我可以做這樣的查詢:

var lastPaymentDate = 
    db.Repository<UserPayment>() 
      .Where(u => u.UserId == 1) 
      .Select(x => x.PaymentDate) 
      .Max(); 

然後:

var userPayment = db.Repository<UserPayment>() 
         .Where(u => u.UserId == request.UserId 
         && u.PaymentDate == lastPaymentDate).Single(); 

是什麼辦法,我能得到這個紀錄在一個查詢? :)

回答

6

訂單付款的PAYMENTDATE降序排列,並選擇第一個:

var userPayment = db.Repository<UserPayment>() 
         .Where(u => u.UserId == request.UserId) 
         .OrderByDescending(u => u.PaymentDate) 
         .FirstOrDefault();