2013-09-25 432 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();