You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LINQ入门:如何从列表中排除Level最大值对应的记录

用LINQ排除最高Level值的记录解决方案

嗨,刚接触LINQ确实会有从循环思维转成声明式思维的适应过程,我来帮你搞定这个需求!

首先咱们先明确目标:先找出数据集中的最高Level值,然后筛选掉所有等于这个值的记录。用LINQ可以很简洁地实现,不用再写繁琐的for循环啦。

步骤拆解

  1. 定义数据结构:先假设你的数据是封装在一个类里的(比如Employee),这样LINQ操作起来更方便:
public class Employee
{
    public string Name { get; set; }
    public int ID { get; set; }
    public int Level { get; set; }
}
  1. 初始化数据列表:把你提供的测试数据填充进去:
var employees = new List<Employee>
{
    new Employee { Name = "aaa", ID = 123, Level = 0 },
    new Employee { Name = "bbb", ID = 122, Level = 1 },
    new Employee { Name = "ccc", ID = 222, Level = 2 },
    new Employee { Name = "ddd", ID = 223, Level = 3 }
};
  1. 实现筛选逻辑:
    • 第一步先获取所有记录中的最高Level值(只计算一次,性能更优)
    • 第二步用Where方法筛选出Level不等于最高值的记录

代码如下:

// 先获取最高Level值
int maxLevel = employees.Max(e => e.Level);

// 筛选排除最高Level的记录
var filteredEmployees = employees.Where(e => e.Level != maxLevel).ToList();

如果你想把两行合并成一句也可以,不过分开写可读性更好:

var filteredEmployees = employees.Where(e => e.Level != employees.Max(e => e.Level)).ToList();

额外提示

如果你的数据集可能为空,记得加个判断避免空序列异常:

var filteredEmployees = new List<Employee>();
if (employees.Any())
{
    int maxLevel = employees.Max(e => e.Level);
    filteredEmployees = employees.Where(e => e.Level != maxLevel).ToList();
}

运行上面的代码,最终得到的结果就是排除了Level=3的ddd记录,剩下的三条数据啦!

内容的提问来源于stack exchange,提问作者TrevorGoodchild

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:27:13