LINQ - 选择前10%的元素

Max*_*axi 2 c# linq

使用LINQ我必须通过"Score"值选择List of ordered(asc)的前10%.该模型具有Id和Score.

例:

如果我有100个项目,并且每个项目都有一个分数,我希望它们按分数(asc)排序,并且只选择前10名(10%)

到目前为止我做了什么:

var orderedList = (from Emps in db.Emps
                  orderby Emp.Score ascending
                  select Emp);
Run Code Online (Sandbox Code Playgroud)

然后我必须计算orderedList并计算10%并进行另一个查询.如果可能的话,我希望所有人都在同一个查询中.

我该怎么做呢?

Dea*_*one 9

您可以使用Take(int count)扩展方法:

var result = values.OrderBy(t => t.Score).Take(values.Count * 10 / 100);
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要始终至少使用1个值,您可以使用Math.Ceiling:

var result = values.OrderBy(t => t.Score).Take((int) Math.Ceiling(values.Count * 10 / 100d));
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是您的收藏品,您可以在那里保存自己的价值观。 (2认同)