gpt4 book ai didi

LINQ 聚合与嵌套 foreach

转载 作者:行者123 更新时间:2023-12-04 22:17:16 26 4
gpt4 key购买 nike

我正在努力实现:

foreach (ScheduleItem s in ScheduleItems)
{
foreach (IScheduleModule m in s.ScheduleModules)
{
yield return m;
}
}

使用 LINQ 聚合,我不明白为什么
return ScheduleItems.Aggregate(new Collection<IScheduleModule>(), (x, o) => x.Union(o.ScheduleModules) as Collection<IScheduleModule>);

返回空值。

我使用嵌套的 foreach 没有问题,但我的直觉是使用聚合,我不明白为什么它不会产生相同的结果。

还有其他方法吗?在可读性和性能方面什么是最好的?

最佳答案

您应该为此使用 SelectMany :

ScheduleItems.SelectMany(s => s.ScheduleModules)

这与您最初的嵌套 foreach 循环完全匹配。它也等价于这个查询表达式:
from s in ScheduleItems
from m in s.ScheduleModules
select m

(尽管这将使用略有不同形式的 SelectMany )。

至于为什么 Aggregate 不起作用:您正在调用 Union ,它返回一个 IEnumerable<T> ,然后使用 as 尝试将其转换为 Collection<T>Union 的结果不会是 Collection<T> ,因此 as 运算符的结果为空。

关于LINQ 聚合与嵌套 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com