c# - 使用 LINQ 如何根据范围确定 IEnumerable 的优先级?

标签 c# linq data-structures

如果我的数据是 List<Cat>每只猫的年龄分别为 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

我想根据1-3、4-8、9-10的范围重新排序列表

结果列表将是

3, 2, 1, 8, 7, 6, 5, 4, 10, 9

我该怎么做?

我首先考虑创建三个查询:

var band1 = myList.Where(c => c <= 3);
var band2 = myList.Where(c => c => 4 && c <= 8);
var band3 = myList.Where(c => c >= 9);

但是我不知道如何使用 LINQ 合并结果,因为我有三个 IEnumerable<Cat> .

正确的使用方法是什么,还是我必须使用 foreach

最佳答案

您可以使用 Concat .

var band1 = myList.Where(c => c <= 3);
var band2 = myList.Where(c => c => 4 && c <= 8);
var band3 = myList.Where(c => c >= 9);

var result = band1.Concat(band2).Concat(band3);

关于c# - 使用 LINQ 如何根据范围确定 IEnumerable 的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956716/

相关文章:

c# - 如何向 Image 类等内容添加基本属性?

c# - 使用 linq 选择后是否可以保留属性类型?

java - 使用堆栈和队列对数组进行排序

C++:用于高效插入和检索自定义数据的数据结构

c# - 与 ICommand 的 WPF 绑定(bind)错误

c# - 如何在c#中使用按钮单击事件来激活运行桌面快捷方式以打开程序

c# - 三层架构 C# 中的循环引用问题

c# - 如何使用 LINQ 计算列表中的重复项

c# - Linq 查询按组求和

string - 通过后缀数组 : do we really need unique sentinels? 的最长公共(public)子串