2017-02-12 1 views
0

LINQ의 각 그룹에서 n 개의 항목을 검색 "각 그룹에서 4 위에 아이템을 얻을"하지만,이나는이 사이트에 더 많은 검색

var rr = db.Products 
      .GroupBy(x => x.ProductSubTypeCategoryId, (key, g) => g.OrderBy(e => e.PersianName) 
      .Take(4).ToList()); 

나처럼 각 그룹에서 첫 번째 항목을 얻을에 대해 많은 항목이 있습니다

var rr = db.Products 
      .GroupBy(x => x.ProductSubTypeCategoryId).Select(g => new { pname = g.Key, count = g.Count() }); 

그러나 각 그룹에서 첫 번째 항목 만 반환하십시오. 각 그룹에서 4 개의 항목을 가져 오도록 코드를 변경하려면 어떻게해야합니까?

답변

3

이 시도 :

var rr = db.Products.GroupBy(x => x.ProductSubTypeCategoryId).Select(g => new { GroupName = g.Key, Items = g.Take(4).ToList() }); 

이것은 ProductSubTypeCategoryId 및 각 그룹에 대해 최대 4 개 항목의 목록을 반환하는 Items 속성을 반환하는 GroupName 속성을 당신에게 익명의 객체를 제공해야합니다.

1

SelectMany()

var rr = db.Products 
     .GroupBy(x => x.ProductSubTypeCategoryId) 
     .SelectMany(g => g.OrderBy(e => e.PersianName).Take(4)) 
     .ToList(); 
과 같은 것을 시도