使用 LINQ,我必须选择按“分数”值排序 (asc) 的列表的前 10%。该模型有 Id 和 Score。
例子:
如果我有 100 个项目并且每个项目都有一个分数,我希望它们按分数 (asc) 排序并且只选择前 10 个 (10%)
到目前为止我做了什么:
var orderedList = (from Emps in db.Emps
orderby Emp.Score ascending
select Emp);
然后我必须计算 orderedList
并计算 10% 并执行另一个查询。
如果可能的话,我希望所有人都在同一个查询中。
我该怎么做?
最佳答案
您可以使用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));
关于c# - LINQ - 选择前 10% 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44750790/