这是一个非常简单的问题,但我找不到答案:
在F#中是否有任何Seq/List操作来匹配LINQ SelectMany?
但是,如果我试图证明F#List操作比LINQ更强大......
在C#SelectMany使用语法非常简单:
var flattenedList = from i in items1
from j in items2
select ...
Run Code Online (Sandbox Code Playgroud)
有没有简单的直接匹配,List.flatten,List.bind或类似的东西?
SelectMany有几个签名,但最复杂的签名似乎是:
IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
this IEnumerable<TSource> source,
Func<TSource, IEnumerable<TCollection>> collectionSelector,
Func<TSource, TCollection, TResult> resultSelector
);
Run Code Online (Sandbox Code Playgroud)
在F#术语中,这将是:
('a -> 'b list) -> ('a -> 'b -> 'c) -> 'a list -> 'c list
Run Code Online (Sandbox Code Playgroud) 身份功能.
参数:x类型:'T(输入值)
返回值:相同的值
F#核心库版本,支持:2.0,4.0,Portable
为什么有一个返回其输入的函数?