将一个集合分组并从每个组中取5个

Jaw*_*har 5 c# linq

我有一个集合.我需要通过"A"属性对集合进行分组.我必须用"B"属性对每个组进行排序.然后从每组中选择前5.

任何人都可以为此建议LINQ查询?

我尝试的方式不起作用.

 (from item in Recipes
 orderby item.Rating descending
 group item by item.MainCategory).Take(5)
Run Code Online (Sandbox Code Playgroud)

查询应该返回 IEnumerable<IGrouping<string, myrecipetype>>

Ser*_*kiy 6

你正在前五组.相反,您需要从每个组中选择前五个项目:

from item in Recipes   
orderby item.Rating descending      
group item by item.MainCategory into g
select g.Take(5)
Run Code Online (Sandbox Code Playgroud)

更新:

from item in Recipes   
orderby item.Rating descending      
group item by item.MainCategory into g
select g.Take(5).GroupBy(item => item.MainCategory).First()
Run Code Online (Sandbox Code Playgroud)