我遇到以下错误:
status_group
问题是F#生成了一个结构选项列表,而C#希望使用一个具有相同类型的IEnumerable。
如何转换?
编辑: 这是完整的错误消息:
Library.fs(80,40):[FS0001]类型'struct(DateTime * Intervals * float * float)选项列表'与类型'Collections.Generic.List'不兼容 Library.fs(80,40):[FS0193]类型约束不匹配。类型'struct(DateTime * Intervals * float * float)选项列表'与类型'Collections.Generic.List'不兼容 Library.fs(81,16):[FS0001]类型“ a option”与类型“ unit”不匹配
如果我用我知道的字段不是可选字段填充结构,则会出现相同的错误:
struct(DateTime.MinValue,Intervals.Tick,0.0,0.0)
添加了屏幕截图:
编辑:
我添加了ToList()转换,但没有帮助:
答案 0 :(得分:3)
要从其他任何可枚举的对象(包括F#List<T>
)中创建list
,请使用System.Linq.Enumerable
中的.ToList
extension method:
open System.Linq
...
db.AddQuotesList(Candle.Intervals.Tick, output.ToList())
另一种方法是使用List
自己的构造函数之一,该构造函数将枚举作为参数:
open System.Collections.Generic
...
db.AddQuotesList(Candle.Intervals.Tick, List(output))
但是请记住,这样做意味着内存分配:List
并不像IEnumerable
那样“懒惰”,它将在构造它时为所有项目分配一个内存块。 / p>