我是一名 .Net 开发人员,但对 F# 和函数式编程都比较新。请问有没有人能为我指点以下问题:
我正在尝试遍历从 CSV 中读取的数据序列并构建一种汇总列表。伪代码如下:
type record = { Name:string; Time:DateTime;}
type summary = {Name:String; Start:DateTime; End:DateTime}
示例数据: (名称 时间)
- A 10:01
- A 10:02
- A 10:03
- B 11:15
- B 11:25
- B 11:30
- C 12:00
- A 13:01
- A 13:05
我想要遍历这个序列并建立第二个序列:
Seq<Summary>
(开始时间 结束时间)
- A 10:01 10:03
- B 11:15 11:30
- C 12:00 12:00
- A 13:01 13:05
我应该将 seq<record>
管道传递给一个以 foreach
方式迭代的函数,还是有更好的方法可以完成?我已经在 F# 中对数据进行了排序,所以数据按时间顺序排列。我不必担心它们会乱序。
如果是 C#,我可能会执行以下伪代码:
List<Summary> summaryData
foreach(var r in records)
{
Summary last = summaryData.LastOrDefault()
if(last == null)
{
summaryData.add( new Summary from r)
}
else
{
if(last.Name = r.Name)
{
last.End = r.Time
}
else
{
summaryData.add( new Summary from r)
}
}
非常感谢您的帮助!