2012-11-25 2 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도 좋습니다. 당신이 LoanDate이 EquipmentId에 의해 다음 그룹을 하강에 의해 대출을 주문하는 경우

감사

답변

0

는 각 그룹의 첫 번째 요소는 EquipmentId에 대한 가장 최근의 대출이 될 것입니다. userId이 null이 아니면 현재 장비가있는 사용자의 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

관련 문제