如何使用单条LINQ语句查询满足指定技能最低等级要求的员工列表
实现方案
你需求的单条LINQ实现可以直接完成,注意原示例的GetEmployeesWithMinimalSkillLevel方法签名缺少最低技能等级的入参,我们先补充该参数后实现如下:
// 补充minLevel参数后的方法签名 public List<Employee> GetEmployeesWithMinimalSkillLevel(string skillName, int minLevel) { return employees .Where(e => e.Skills != null && e.Skills.TryGetValue(skillName, out int level) && level >= minLevel) .ToList(); }
逻辑说明
- 全程仅用单条LINQ链式调用完成,没有拆分多条语句
- 优先判断
Skills不为null,避免空引用异常 - 用
TryGetValue判断技能是否存在同时获取等级,比ContainsKey+索引器的写法少一次字典查找,性能和原生循环实现基本一致 - 最终直接返回符合筛选条件的员工列表
如果你的最低技能等级是业务固定值,直接把minLevel参数替换成对应常量即可。
内容的提问来源于stack exchange,提问作者Andriy Shevchenko
相关产品推荐
相关产品推荐

