c# - 如何使用 LINQ C# 过滤列表

标签 c# linq

我需要过滤 List<Students>进入StudentsWitHighestDebts .

标准是只有学生在ZachetDidNotPass有最大值和maximum-1总共List<Students>包含在结果中。

var StudentsWitHighestDebts = students
               .Where(s => s.ZachetDidNotPass.(some condition))
               .OrderBy(s => s.Name)
               .ToList();

例如,给定一个学生列表 ZachetDidNotPass0 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();

第三个选项(带最高债务和highestDebt - 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();

关于c# - 如何使用 LINQ C# 过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29427872/

相关文章:

c# - nHibernate:如何映射可以是任何类型的属性?

c# - 如何在 asp.net MVC 中创建 URL 字符串

c# - 在 C# 中将 PDF、Doc 和 Docx 转换为 rtf

c# - 事件处理程序/引发程序代码片段

c# - 无法创建类型的常量值在此上下文中仅支持原始类型或枚举类型

c# - 如何使用 Expression 使用 Where 和 OR 构建动态查询

c# - 启动第二个表单后关闭数据库连接

c# - 计算 List<Array> 的每个数组中的元素

c# - 如何在 Python 中进行 groupby 列表理解(从 C#/LINQ 角度来看)

c# - 如何在 LINQ to Entities Join 中使用 Convert.Int32() 方法?