如果Bind是monad的基础,为什么我们不在Linq中使用更多的SelectMany?

时间:2010-11-17 06:53:36

标签: c# linq functional-programming monads

如果Bind是monad的基础,为什么我们不在Linq中使用更多的SelectMany?

(抱歉,想不出有什么用处可以添加到问题中)

2 个答案:

答案 0 :(得分:5)

嗯,SelectMany至关重要,因为许多其他事情可以以这种方式表达 - 但这并不意味着它始终是最简洁的表达方式。您可以将SelectWhere等视为仅仅是方便的方法...但是所以方便我们通常不需要最灵活的形式。

举一个例子,Aggregate可以执行您想要的所有聚合 - 但MaxCount等更为常见。

答案 1 :(得分:2)

请注意,每次在Linq查询中有两个from时,您就会调用SelectMany

http://bartdesmet.net/blogs/bart/archive/2008/08/30/c-3-0-query-expression-translation-cheat-sheet.aspx