作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想将一个列表拆分为两个列表,一个可以直接处理,另一个是剩余部分,它将沿着链传递给其他处理程序。
输入:
输出:
这已经存在了吗?也许是我目前没有想到的 Linq 方法?否则,有人有好的 C# 示例吗?
最佳答案
这是一个简单的方法。请注意,ToLookup
急切地评估输入序列。
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6 };
var lookup = list.ToLookup(num => num % 2 == 0);
IEnumerable<int> trueList = lookup[true];
IEnumerable<int> falseList = lookup[false];
您可以使用 GroupBy
对输入序列进行惰性求值,但它并不相当漂亮:
var groups = list.GroupBy(num => num % 2 == 0);
IEnumerable<int> trueList = groups.Where(group => group.Key).FirstOrDefault();
IEnumerable<int> falseList = groups.Where(group => !group.Key).FirstOrDefault();
关于c# - 将 IEnumerable 拆分为两个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847298/
我是一名优秀的程序员,十分优秀!