Esta es la pregunta bastante simple, pero no he encontrado una respuesta:F # Lista SelectMany
¿Hay alguna operación/Sec Lista de F # para que coincida con el LINQ SelectMany?
- Sé que puedo usar System.Linq en F # si I quiero.
- Sé que puedo hacer un método recursivo y uso F # Expresiones de cálculo (y hago cosas aún más poderosas).
Pero si trato de demostrar que las operaciones # Lista F son más poderosos que LINQ ...
- .Where = List.filter
- .Elija = List.map
- .Aggregate = List.fold
- ...
En sintaxis de uso # SelectMany C es bastante simple:
var flattenedList = from i in items1
from j in items2
select ...
¿Existe alguna coincidencia directa fácil, List.flatten, List.bind o algo así?
SelectMany tiene un par de firmas, pero el más complejo parece ser:
IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
this IEnumerable<TSource> source,
Func<TSource, IEnumerable<TCollection>> collectionSelector,
Func<TSource, TCollection, TResult> resultSelector
);
En términos F # esto sería:
('a -> 'b list) -> ('a -> 'b -> 'c) -> 'a list -> 'c list
¿Cómo demostrarías que la lista F # es más poderosa que la lista C#? Si es una cuestión de cuál tiene más funciones para él, eso no se muestra más poderoso, solo que más hinchado. ¿Estás tratando de demostrar que hay algo que puedes hacer en F # que no puedes con C#, usando listas? –