我有以下代码填充System.Collections.Generic.List我不喜欢它所以我想知道是否有更好的方法来做到这一点.
let getDirectories =
Directory.GetDirectories(_baseFolder)
let languagesList = new System.Collections.Generic.List<string>()
Seq.cast getDirectories
|> Seq.map(fun dir -> (new DirectoryInfo(dir)).Name)
|> fun range -> languagesList.AddRange(range)
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 17
你有没有尝试过:
let list = new System.Collections.Generic.List<string>(arr)
Run Code Online (Sandbox Code Playgroud)
List<'T>有一个构造函数,IEnumerable<'T>所以它很乐意接受任何seq<'T>你传递给它.
除了Mehrdad的回答
我发现为许多标准集合和.Net类型定义帮助程序模块有助于使它们更加友好.在这里,我将定义以下内容
module BclListUtil =
let ofArray (arr: 'T array) = new System.Collections.Generic.List<'T>(arr)
let ofSeq (arr: 'T seq) = new System.Collections.Generic.List<'T>(arr)
Run Code Online (Sandbox Code Playgroud)
然后,您可以将原始代码更改为以下内容
let getDirectories =
Directory.GetDirectories(_baseFolder)
let languagesList =
getDirectiories
|> Seq.map (fun dir -> (new DirectoryInfo(dir)).Name)
|> BclListUtil.ofSeq
Run Code Online (Sandbox Code Playgroud)