db의 테이블 구조를 변경할 수없는 곳에서 업데이트해야하는 응용 프로그램을 상속했습니다.Linq에서 Entity Framework로 필터링
ID | PromoID | VersionDate | Type
1 P0001 01/03/2013 Live
2 P0002 02/03/2013 Live
3 P0001 02/04/2012 Draft
4 P0003 01/03/2013 Live
5 P0003 01/02/2013 Live
원본 개발자는 원시 레코드를 버전 관리하는 기본 개념을 사용했습니다. 내가해야 할 일은 모든 "라이브"버전의 최신 버전을 반환하는 linq 쿼리를 만드는 것입니다. 그러나 해당 버전 중 하나라도 "초안"유형을 가지고 있으면 레코드가 반환되지 않도록해야합니다.
I 이 있습니다
var records = from r in _context.Promotions
let maxversion =
(from v in _context.Promotions
where v.PromoID == t.PromoID
select v.VersionDate).Max()
where r.Type == "Live"
&& r.VersionDate == maxversion
select r
하지만 난 그들 중 하나가 "초안"를 입력이 동일한 PromoID가 모든 레코드를 필터링하는 방법을 모른다. 필자가 제공 한 데이터에서 동일한 PromoId를 공유하고 # 3이 초안 유형을 가지고 있으므로 레코드 # 1과 # 3을 모두 잘라야합니다.