如何使用LINQ降序查询集合,提取不超过元素最大值的3个不同值
LINQ查询实现方案
你可以直接用以下LINQ语句实现需求,全程不需要额外自定义逻辑:
首先确保你已经引入了必要的命名空间:
using System.Linq; using System.Collections.ObjectModel;
方法语法写法(最常用)
var result = c1.Distinct() .OrderByDescending(x => x) .Skip(1) .Take(3); // 按你需要的格式输出 Console.WriteLine($"({string.Join(',', result)})");
查询表达式写法
var result = (from num in c1.Distinct() orderby num descending select num).Skip(1).Take(3);
逻辑说明
每一步的作用完全匹配需求:
Distinct():去除集合中的重复元素,得到无重复的整数序列OrderByDescending(x => x):对无重复序列按数值从大到小降序排序Skip(1):跳过排序后的第一个元素(也就是原集合的最大值7,匹配你要提取小于最大值的元素的要求)Take(3):取后续3个元素,最终得到序列6,5,4
代入你给出的示例集合运行,输出结果完全符合预期(6,5,4)。
内容的提问来源于stack exchange,提问作者So_oP
相关产品推荐
相关产品推荐

