gpt4 book ai didi

c# - 将 IEnumerable 拆分为两个

转载 作者:太空狗 更新时间:2023-10-29 17:31:39 25 4
gpt4 key购买 nike

我想将一个列表拆分为两个列表,一个可以直接处理,另一个是剩余部分,它将沿着链传递给其他处理程序。

输入:

  • 一个项目列表
  • 一种过滤方法,用于确定将项目包含在哪个列表中。

输出:

  • “真实”列表
  • “错误”列表

这已经存在了吗?也许是我目前没有想到的 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/

25 4 0