convert .NET generic List to F# list

2019-03-22 13:25发布

问题:

Is there a built-in method to convert the .NET List<> into the F# list?

回答1:

Try List.ofSeq in the Microsoft.FSharp.Collections namespace.

#                     List.ofSeq : seq<'T> -> 'T list

It's not specifically for System.Collections.Generic.List<T>, but for IEnumerable<T> (seq<'T> in F#) types in general, so it should still work.

(It's also not strictly built into the F# language, but neither is List<T> built into C# or VB.NET. Those are all part of the respective standard libraries.)



回答2:

Given IEnumerable<T> foo you would do the following (in C#) to get an F# list<T>:

 var fsharpList = ListModule.OfSeq(foo);

ListModule refers to Microsoft.FSharp.Collections.ListModule, and is referred to as List from within F# itself.