[英]Cannot implicently convert type 'string' to 'bool' JSON
您好,我需要帮助从 Object 列表中找到一个值,该列表是我从一个 JSON 文件创建的:
JSON 结构:
{
"mp": "1",
"mpuus": [
{
"id": "100",
"tpuus": [
"000000001",
"000000002"
]
},
{
"id": "101",
"tpuus": [
"00000003"
]
}
]
},
{
"mp": "2",
"mpuus": [
{
"id": "200",
"tpuus": [
"0000004"
]
}
]
},
我将 JSON 转换为
RootMedicationMapping object.
List<rootMedicationMapping> = JsonHandler.DeserializeJasonArrayFromFile<RootMedicationMapping>(@"JSON File PATH");
我想通过 tpuu 值搜索rootMedicationMapping列表并获取 mp 值。
例如,我传递的值是 tpuu = 000000002,我想取回 mp 值(在本例中为 1)
这是在尝试以下语法,但它让我失望
'不能隐含地将类型'string'转换为'bool'
var mpId= rootMedicationMapping.Find(x => x.MPUUs.Find(y=>y.Tpuus.Find(z=>z.Equals("tpuu value"))));
List.Find(Predicate)的参数需要是一个Predicate ,它是一个委托,它接受您正在搜索的 object 的一个实例,并期望返回一个布尔值,指定 object 是否匹配。 目前,在内部 Find 调用的 Predicate 中,您只是返回另一个 Find 调用的结果,这是一个字符串而不是预期的bool ,导致您看到的错误。
要解决此问题,您只需确保谓词 arguments 返回 bool。 使用您所拥有的,您只需添加检查内部 Find 调用是否返回null
:
var mpId =
rootMedicationMapping.Find(x =>
x.MPUUs.Find(y =>
y.Tpuus.Find(z =>
z.Equals("tpuu value")) != null) != null)?.mp;
您也可以使用 LINQ 编写此代码,从而允许Any
处理 null 检查:
var mpId =
rootMedicationMapping.FirstOrDefault(x =>
x.MPUUs.Any(y =>
y.Tpuus.Any(z =>
z.Equals("tpuu value"))))?.mp;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.