【发布时间】:2020-05-15 17:25:36
【问题描述】:
我将集合从 List 更改为 Dictionary,看来我需要将其从使用 .ForEach() 更改为 foreach() - 无论我是在迭代字典本身还是 Dictionary.Values。
这没什么大不了的,但我已经看到了几次细微的差异,当您可以使用和不能使用 LINQ 时,我想知道是否有 一种方法,而我只是错过了它? p>
【问题讨论】:
-
字典是可枚举的,所以你所要做的就是做 dict.Select() 或 dict.Where()
-
.ForEach实际上是 method onList而不是IEnumerable因此为什么它不适用于Dictionary而不是在 Linq 中。 -
另请参阅此处的问题:stackoverflow.com/questions/101265/…
-
是的,我想知道
Values是什么...我认为最终可能是List,但显然不是。我想知道是否有很好的技术原因或只是“因为”? -
@Mr.Boy LINQ 是声明性方法,它不修改源集合,而是以 一种惰性方式 进行过滤/映射。 ForEach 与它有些相反...确实
Select(x => action(x)).All()大致相当于.ForEach但这确实令人困惑,如果您需要非延迟执行,则常规foreach会更加自我记录。