-3

我有主表帐户,带有 Id(PK)、CustomerId(FK) 和 AccountNumber。

一个客户可以有“n”个帐户。

Account
--------
1   |   1   |  93839200
2   |   1   |  93839201
3   |   1   |  93839202
4   |   2   |  93839200

另一个表是带有 Id(PK)、AccountId(FK)、status 和 statusDate 的 AccountStatus。

AccountStatus 
--------------
1 | 1 | Created | 1/1/2013
2 | 1 | Verified| 2/1/2013
3 | 2 | Created | 9/1/2013
4 | 2 | Rejected| 11/1/2013
5 | 2 | Deleted | 12/1/2013
6 | 3 | Deleted | 12/1/2013

帐户状态将插入此表中并带有状态日期。

我需要一个 Linq 语句来选择 CustomerID 的最新银行状态。

即,如果我将 CustomerID 传递为 1,我需要获取 BankAccount 的最新状态,例如

2 | 1 | Verified| 2/1/2013
5 | 2 | Deleted | 12/1/2013
6 | 3 | Deleted | 12/1/2013
4

1 回答 1

0
var results = from a in Accounts
              join s in AccountStatuses on a.ID equals s.AccountID
              group new { a, s } by a.CustomerID into g
              let i = g.OrderByDescending(i => i.s.StatusDate).FirstOrDefault()
              select new
              {
                  AccountId = i.a.ID,
                  CustomerID = i.a.CustomerID,
                  Status = i.s.Status,
                  StatusDate = i.s.StatusDate
              };
于 2013-03-20T10:55:44.257 回答