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

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

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

DB샘플

tb1

Id DetailId LastUpdatedAt
1 101 2017-02-01 01:00:00
2 101 2017-02-01 10:00:00
3 101 2017-02-02 01:00:00
4 102 2017-02-01 01:00:00
5 102 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

Entity Framework creating IQueryable of the most recent

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora