我需要将过滤List<Students>
为StudentsWitHighestDebts
。
该标准是,只有让学生ZachetDidNotPass
有最大值和maximum-1
在所有List<Students>
被列入结果。
var StudentsWitHighestDebts = students
.Where(s => s.ZachetDidNotPass.(some condition))
.OrderBy(s => s.Name)
.ToList();
例如,给出具有ZachetDidNotPass
值的学生列表0 1 2 5 6 7
。结果StudentsWitHighestDebts
应只包含7 and 6
值在的学生ZachetDidNotPass
。
第一种选择:承担2个最高债务并通过ZachetDidNotPass筛选学生:
var highestDebts = students.Select(s => s.ZachetDidNotPass)
.OrderByDescending(p => p).Take(2).ToArray();
var studentsWitHighestDebts = students
.Where(s => highestDebts.Contains(s.ZachetDidNotPass))
.OrderByDescending(s => s.ZachetDidNotPass).ToList();
第二种选择-按ZachetDidNotPass分组,按键降序对分组进行排序,选择前2个分组,然后从分组中选择学生
var studentsWitHighestDebts = students.GroupBy(s => s.ZachetDidNotPass)
.OrderByDescending(g => g.Key).Take(2)
.SelectMany(g => g).ToList();
第三种选择(选择债务最高,债务最高的学生-1)
var highestDebt = students.Max(s => s.ZachetDidNotPass);
var studentsWitHighestDebts = students
.Where(s => s.ZachetDidNotPass == highestDebt || s.ZachetDidNotPass == highestDebt - 1)
.OrderByDescending(s => s.ZachetDidNotPass).ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句