我正在处理一些C#代码,以解决诸如移动平均值之类的问题,在这些代码中,我经常需要使用List / IEnumerable并处理大块连续数据。F#Seq模块具有一个强大的窗口函数,该函数接受一个Sequence并返回一系列连续元素的序列。

C#是否具有与LINQ开箱即用的等效功能?

有帮助吗?

解决方案

您始终可以只从C#调用SeqModule.Windowed,只需要引用FSharp.Core.Dll。函数名称也略有修饰,因此您称呼Windowed而不是windowed,以使其符合C#大写约定

其他提示

您总是可以自己滚动(或翻译自F#内核): 通用标签

我的尝试看起来像这样,它比直接调用F#要慢得多(正如John Palmer所建议的那样)。我猜这是因为使用未检查数组的F#: 通用标签

响应式扩展有一些运算符可以帮助解决此问题,例如缓冲区窗口。可以在实验分支中找到的Interactive Extensions将这些扩展和大量其他运算符添加到LINQ。

约翰·帕尔默(John Palmer)的答案很好,这是基于他的答案的示例。 通用标签

您可能(或不希望)将ToArray()添加到末尾,而没有ToArray,返回类型仍然在F#世界中(序列)。使用ToArray,它又回到了C#世界(数组)。

”在此处输入图片描述“

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top