将.NET通用列表转换为F#列表

49
有没有内置的方法可以将.NET List<>转换为F#列表?
2个回答

59
尝试在 Microsoft.FSharp.Collections 命名空间中使用 List.ofSeq
#                     List.ofSeq : seq<'T> -> 'T list

这个功能不是专门为System.Collections.Generic.List<T>设计的,而是针对一般的IEnumerable<T>(在F#中为seq<'T>)类型,所以它应该仍然有效。

(它也不是严格内置于F#语言中,但List<T>也不是C#或VB.NET内置的。它们都是各自标准库的一部分。)


我也注意到了,在2.0编译器中,右侧的List<Something>会在左侧显示为seq(或IEnumerable)。那些家伙挺聪明的(+1) - BuddyJoe

14

若给定 IEnumerable<T> foo ,你需要按照以下方式(在 C# 中)获取一个 F# 的 list<T>

 var fsharpList = ListModule.OfSeq(foo);

ListModule 指的是 Microsoft.FSharp.Collections.ListModule,在 F# 内部被称为 List


F# 中不存在 ListModule 这个东西。 - Joel
5
不确定问题是关于C#还是F#的。这段代码是用C#编写的。在F#中有一个名为ListModule的模块,而其对应的列表类型只被称为“list”。因此,在F#中,“list.ofSeq”等同于C#中的“ListModule.OfSeq”。 - basarat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接