Это довольно простой вопрос, но я не нашел ответа:
Есть ли в F # какая-либо операция Seq / List, соответствующая LINQ SelectMany?
Но если я попытаюсь доказать, что операции F # List более мощные, чем LINQ ...
В C # SelectMany синтаксис использования довольно прост:
var flattenedList = from i in items1
from j in items2
select ...
Есть ли какое-нибудь простое прямое соответствие, 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
);
В терминах F # это будет:
('a -> 'b list) -> ('a -> 'b -> 'c) -> 'a list -> 'c list