1

의 가장 높은 값을 받기 나는이 다음 표 :EF 코어 GROUPBY 행

| Id | ParentId | Version | 
--------------------------- 
| 1 | 1  | 0 | 
| 2 | 1  | 1 | 
| 3 | 1  | 2 | 
| 4 | 4  | 0 | 
| 5 | 4  | 1 | 
| 6 | 4  | 2 | 

내가 ParentId의 그룹별로 가장 높은 Version를 선택할 수있는 쿼리 (EF에 현 Linq에) 찾고 있어요 .

await _context.Actions.GroupBy(a => a.ParentId) 
         .Select(s => s.Max(a => a.Version)) 
         .ToListAsync(); 

내가 가진 유일한 문제는 버전 행이 반환하지만 전체 행을 그룹별로 반환하고자한다는 것입니다 :

나는 현재이 같은 있습니다.

답변

1

당신은 내림차순으로 주문하고 각 그룹의 첫 번째

await _context.Actions 
       .GroupBy(a => a.ParentId) 
       .Select(s => s.OrderByDescending(a => a.Version).First()) 
       .ToListAsync(); 
+0

감사를 취할 필요가있을 것이다! 괜찮은 성능입니까? – user2963570