值不能为空错误将通用列表转换为 F# 列表/数组
Value cannot be null error casting Generic list to F# List / Array
我的代码是(使用微软编剧抓取网页)
let bpl = page.Locator("//tr[@title]")
let! links =
bpl.EvaluateAllAsync("(tr) => tr.map(element => element.getAttribute(\"title\"))")
|> Async.AwaitTask
let aa = links |> Seq.toArray
如果我只是 运行 前两行 - 它会 return 看起来像 System.Collections.Generic.List 类型的字符串 - 这正是我需要的。
现在我想转换为 F# 列表或数组 - 但只要我添加第 3 行,我就会收到错误消息(值不能为空)。只有错误发生在它到达第 3 行之前。
我错过了什么?
完整堆栈跟踪:
我设法使用 unbox
解决了这个问题
let bpl = page.Locator("//tr[@title]")
let! links =
bpl.EvaluateAllAsync("(tr) => tr.map(element => element.getAttribute(\"title\"))")
|> Async.AwaitTask
let blogPagelinks =
unbox<System.Collections.Generic.List<System.Object>> links
|> Seq.map(fun item -> unbox<string> item)
|> Seq.toList
我的代码是(使用微软编剧抓取网页)
let bpl = page.Locator("//tr[@title]")
let! links =
bpl.EvaluateAllAsync("(tr) => tr.map(element => element.getAttribute(\"title\"))")
|> Async.AwaitTask
let aa = links |> Seq.toArray
如果我只是 运行 前两行 - 它会 return 看起来像 System.Collections.Generic.List 类型的字符串 - 这正是我需要的。
现在我想转换为 F# 列表或数组 - 但只要我添加第 3 行,我就会收到错误消息(值不能为空)。只有错误发生在它到达第 3 行之前。
我错过了什么?
完整堆栈跟踪:
我设法使用 unbox
解决了这个问题let bpl = page.Locator("//tr[@title]")
let! links =
bpl.EvaluateAllAsync("(tr) => tr.map(element => element.getAttribute(\"title\"))")
|> Async.AwaitTask
let blogPagelinks =
unbox<System.Collections.Generic.List<System.Object>> links
|> Seq.map(fun item -> unbox<string> item)
|> Seq.toList