Je suis nouveau à F # et je me demande comment je vais aplatir une liste.F # - Aplatir liste/plage
Essentiellement dans la base de données, je stocke un enregistrement avec une plage min_age et max_age (c'est un exemple fictif pour des raisons de concision - je ne suis pas agist!). Mes champs ressembler à quelque chose comme ce qui suit:
id, coût, économies, MIN_AGE, max_age
J'ai essentiellement une classe F # qui agit comme un à-un avec ce tableau - à savoir toutes les propriétés sont mappées exactement aux champs de la base de données.
Ce que je voudrais faire, c'est aplatir cette gamme. Ainsi, au lieu d'une liste contenant des articles comme celui-ci:
saving_id = 1, cost = 100, savings = 20, min_age = 20, max_age = 26
saving_id = 2, cost = 110, savings = 10, min_age = 27, max_age = 31
Je voudrais une liste contenant des articles comme celui-ci:
saving_id = 1, cost = 100, savings = 20, age = 20
saving_id = 1, cost = 100, savings = 20, age = 21
etc.
saving_id = 2, cost = 110, savings = 10, age = 27
saving_id = 2, cost = 110, savings = 10, age = 28
etc.
Y at-il mécanisme intégré pour aplatir une liste de cette manière et/ou quelqu'un sait-il comment y parvenir? Merci à l'avance,
JP
Bonne réponse. Je suppose que l'OP demande un «mécanisme intégré» qui ne fonctionnerait vraiment que s'il n'y avait pas de types d'enregistrements personnalisés impliqués, mais comme c'est cette solution qui semble aussi élégante que possible. –
Une expression de séquence peut être une ligne générique élégante: 'aplatir seqOfSeq = seq {pour seq dans seqOfSeq ne cède pas! seq} '. – MasterMastic