본문 바로가기
개발/Database

Entity Framework에서 제일 최근에 갱신된 레코드를 추출하기

by ispie 2019. 1. 23.

Entity Framework에서 제일 최근에 갱신된 레코드를 추출하는 방법을 정리해 보았습니다.

 

DB샘플

tb1

Id  DetailId  LastUpdatedAt
 1  101  2017-02-01 01:00:00
 2  102  2017-02-01 10:00:00
 3  103  2017-02-02 01:00:00
 4  104  2017-02-01 01:00:00
 5  105  2017-02-02 01:00:00

 

tb2

DetailId  Name
 101  Name1
 102  Name2

 

 

예시1. tb1에서 같은 DetailId를 가진 복수의 레코드 중에서 제일 최근에 갱신된 레코드를 추출

var list = (from t in db.tb1
		   group t by t.DetailId into g
		   select g.OrderByDescending(e => e.LastUpdatedAt).FirstOrDefault() into p
		   select new 
		   {
			   Id = p.Id,
			   DetailId = p.DetailId,
			   LastUpdatedAt = p.LastUpdatedAt
		   }).ToList();


예시2. tb1에서 같은 DetailId를 가진 복수의 레코드 중에서 제일 최근에 갱신된 스테이터스가 10인 레코드의 값과 그 레코드와 조인된 tb2.Name의 값을 추출

var list = (from t in db.tb1
			group t by t.OrderDetailId into g
			select g.OrderByDescending(e => e.LastUpdatedAt).FirstOrDefault() into p
			join tt in db.tb2 on p.DetailId equals tt.DetailId
			where 
				p.Status == 10
		   select new 
		   {
			   Id = p.Id,
			   DetailId = p.DetailId,
			   Name = tt.Name,
			   LastUpdatedAt = p.LastUpdatedAt
		   }).ToList();

 

 

참고 사이트

 

Entity Framework - select group by, select max date
https://stackoverflow.com/questions/19073117/entity-framework-select-group-by-select-max-date

Entity Framework creating IQueryable of the most recent
https://stackoverflow.com/questions/1273437/entity-framework-creating-iqueryable-of-the-most-recent

 

댓글