假设有一个像这样的提供者:
type ColorProvider = JsonProvider<"""
{
"id": "b35b5bcf-761a-4e50-9ff0-4c7de7dd0e5d",
"color": "Red"
}
""">
如果其中一个对象根本没有color属性,则尝试从集合中打印颜色将失败:
dataAccess.QueryAsEnumerable<string>("SELECT Data FROM Objects")
|> Seq.map ColorProvider.Parse
|> Seq.iter (fun item -> printfn "%A" item.Color)
有一个JsonValue.Null要比较,但在这种情况下,它不是null,属性只是缺少 .
如何过滤掉没有颜色属性的项目?
2 回答
您使用
TryGetProperty
的解决方案有效,但有更好的方法 - 您可以使用具有两个记录的更具代表性的示例,其中一个记录缺少color
属性:然后,
Color
属性被推断为option<string>
,您可以使用选项上的模式匹配或使用defaultArg
来很好地处理它:好的,发现它here: