1
1
问得好。它们产生相同的结果,但内部实现是完全不同的。 EnumerableEx.for将被添加到System.Interactive中,以保持iobservable和ienumerable之间的对偶性。注意observable.for和observable.selectmany是不同的:
VS,
因此,您希望EnumerableEx.for具有此签名,而不是它实际具有的签名:
但是,它显然不需要一个不可观测的源。也许是故意的。我会在RX论坛上问你问题,看看RX团队是否有答案。 |
2
0
它们对我来说就像是等价的功能。SelectMany是IEnumerable上的扩展方法。for在EnumerableEx上作为静态方法写入,因此它们的调用方式不同。
我相信使用每一个都有具体的原因。 |
3
0
我的猜测是selectmany动态遍历所有内容,而concat(in for) 遍历它的所有外部IEnumerable元素,然后开始使用它们进行注册和迭代。 换句话说,concat使用一个固定的IEnumerable集,即使它作为IEnumerable接收它们。因此,在for中,甚至在返回第一个treult之前创建了整个IEnumerable集。在selectmany中,您会立即收到一个treult。 |
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |