2012-11-25 111 views
0

我有一張貸款信息表。當前貸款項目

例如:

_________________________________________________________________ 
|id|LoanDate|EquipmentId|FromUser|FromLocation|ToUser|ToLocation| 
|---------------------------------------------------------------| 
|1 |2012-1-1| 100  | NULL | 219  | 605 | NULL  | 
|2 |2012-1-2| 100  | 605 | NULL  | NULL | 219  | 
|3 |2012-1-3| 100  | NULL | 219  | 509 | NULL  | 
----------------------------------------------------------------- 

正如你所看到的,用戶605被租借設備的某一天,然後回到它的次日。之後,設備就借給了不同的用戶。

我該如何去試圖找出哪個用戶當前有哪些設備正在貸給他們,考慮到這張表有跟蹤移動的條目 - 包括跨日期的回報。

有關如何去做這個任何想法,將不勝感激。僞代碼,SQL或LINQ也很好。

感謝

回答

0

如果通過LoanDate通過EquipmentId下降後組責令貸款,每個組中的第一個元素將是最近期的EquipmentId貸款。如果userId不爲空,那麼這是當前擁有設備的用戶的ID。

var items = from loan in loans 
      orderby loan.LoanDate desc 
      group loan by loan.EquipmentId into grp 
      let userId = grp.First().ToUser 
      where userId != null 
      select new { EquipmentId = grp.Key, UserId = userId }; 
+0

謝謝,這太棒了。 – Mike