小编arc*_*tiq的帖子

Linq喜欢函数GroupMultipleValBy

在学习F#+ Linq的awesomne​​ss的过程中,我遇到了一个问题,我无法解决(很好)使用函数,OOP和Linq语法,是否有人愿意帮助?

让我们说我的输入是以下顺序:

let db = seq [ ("bob", 90, ['x';'y'])
               ("bob", 70, ['z'])
               ("frank", 20, ['b'])
               ("charlie", 10, ['c']) ]
Run Code Online (Sandbox Code Playgroud)

行可以读取例如"学生鲍勃已经注册了x,y在第90学期"

我需要的是这个:

[ ("bob",  [90; 70],  ['x'; 'y'; 'z']) 
  ("frank",    [20],  ['b'])
  ("charlie",  [10],  ['c']) ]
Run Code Online (Sandbox Code Playgroud)

这将改为"鲍勃已完成学期90,70并取x,y,z".

Linq/Relational方法通常为这些问题提供最可读的解决方案.但我能想到的最好的是:

type Student = string
type Semester = int
type Class = char

let restructure (inp:seq<Student * Semester * Class list>) = query {
        for (student, semester, classes) in inp do
        groupValBy (semester,classes) student into data 
        yield (data.Key, Seq.map fst data, Seq.collect …
Run Code Online (Sandbox Code Playgroud)

linq f#

3
推荐指数
1
解决办法
73
查看次数

标签 统计

f# ×1

linq ×1