使用LINQ我必须通过“Score”值选择List of ordered(asc)的前10%。该模型具有Id和分数。
示例:
如果我有100个项目且每个项目都有一个分数,我希望它们按分数(asc)排序,只选择前10名(10%)
到目前为止我做了什么:
var orderedList = (from Emps in db.Emps
orderby Emp.Score ascending
select Emp);
然后我必须计算orderedList
并计算10%并进行另一次查询。
如果可能,我希望所有人都在同一个查询中。
我该怎么做?
答案 0 :(得分:9)
您可以使用Take(int count)
扩展名方法:
var result = values.OrderBy(t => t.Score).Take(values.Count * 10 / 100);
或者,如果您想要始终至少获得1个值,则可以使用Math.Ceiling
:
var result = values.OrderBy(t => t.Score).Take((int) Math.Ceiling(values.Count * 10 / 100d));