题
我正在处理一些C#代码,以解决诸如移动平均值之类的问题,在这些代码中,我经常需要使用List / IEnumerable并处理大块连续数据。F#Seq模块具有一个强大的窗口函数,该函数接受一个Sequence并返回一系列连续元素的序列。
C#是否具有与LINQ开箱即用的等效功能?
解决方案
您始终可以只从C#调用SeqModule.Windowed
,只需要引用FSharp.Core.Dll
。函数名称也略有修饰,因此您称呼Windowed
而不是windowed
,以使其符合C#大写约定
其他提示
您总是可以自己滚动(或翻译自F#内核): 通用标签
我的尝试看起来像这样,它比直接调用F#要慢得多(正如John Palmer所建议的那样)。我猜这是因为使用未检查数组的F#: 通用标签
约翰·帕尔默(John Palmer)的答案很好,这是基于他的答案的示例。 通用标签
您可能(或不希望)将ToArray()添加到末尾,而没有ToArray,返回类型仍然在F#世界中(序列)。使用ToArray,它又回到了C#世界(数组)。
不隶属于 StackOverflow