检查 BsonValue 是否不为空
Check if a BsonValue is not null
以 mongo 集合中的以下摘录为例:
{"IsBasedOnProduct" : {
"CodeUV" : "09184",
"Name" : null,
"pricingVersion" : "B"
}
}
我想从此集合中提取 Name
字段并将其放入 C# 对象中。但我不知道如何管理 null
值。
这就是我在 C# 应用程序中所做的事情:
if (foo.Contains("IsBasedOnProduct"))
{
fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") ? foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
当然,当 Name
是 null
时,我会抛出一个 System.ArgumentNullException
我该如何修复它以便在值为 null
时放置 string.Empty
?
使用以下代码快照修复它:
if (foo.Contains("IsBasedOnProduct") && foo["IsBasedOnProduct"].BsonType != BsonType.Null)
{
fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name")&& foo["IsBasedOnProduct"]["Name"].BsonType != BsonType.Null ?
foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
在此之前,您必须将 BJson 转换为 JSON,然后检查条件。
正确 还有另一个要检查的解决方案是 BsonValue
是 NULL
使用 IsBsonNull
属性 [因为 MongoDB.Bson 版本 2.3.0]
此处解决方案:
if (foo.Contains("IsBasedOnProduct") && !foo["IsBasedOnProduct"].IsBsonNull)
{
fooToExcel.Name = (foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") && !foo["IsBasedOnProduct"]["Name"].IsBsonNull) ?
foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
IsBsonNull
属性 的文档 -> https://mongodb.github.io/mongo-csharp-driver/2.3/apidocs/html/P_MongoDB_Bson_BsonValue_IsBsonNull.htm
以 mongo 集合中的以下摘录为例:
{"IsBasedOnProduct" : {
"CodeUV" : "09184",
"Name" : null,
"pricingVersion" : "B"
}
}
我想从此集合中提取 Name
字段并将其放入 C# 对象中。但我不知道如何管理 null
值。
这就是我在 C# 应用程序中所做的事情:
if (foo.Contains("IsBasedOnProduct"))
{
fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") ? foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
当然,当 Name
是 null
时,我会抛出一个 System.ArgumentNullException
我该如何修复它以便在值为 null
时放置 string.Empty
?
使用以下代码快照修复它:
if (foo.Contains("IsBasedOnProduct") && foo["IsBasedOnProduct"].BsonType != BsonType.Null)
{
fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name")&& foo["IsBasedOnProduct"]["Name"].BsonType != BsonType.Null ?
foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
在此之前,您必须将 BJson 转换为 JSON,然后检查条件。
BsonValue
是 NULL
使用 IsBsonNull
属性 [因为 MongoDB.Bson 版本 2.3.0]
此处解决方案:
if (foo.Contains("IsBasedOnProduct") && !foo["IsBasedOnProduct"].IsBsonNull)
{
fooToExcel.Name = (foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") && !foo["IsBasedOnProduct"]["Name"].IsBsonNull) ?
foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}
IsBsonNull
属性 的文档 -> https://mongodb.github.io/mongo-csharp-driver/2.3/apidocs/html/P_MongoDB_Bson_BsonValue_IsBsonNull.htm