我正在从soap服务获取数据,并且想知道提取嵌套列表中第一个元素的正确方法
我遇到的问题的示例
tempModel.Value = req.Data
.FirstOrDefault()
.Readings
.FirstOrDefault()
.Extract
.FirstOrDefault()
.Values
.FirstOrDefault()
.Reading;
问题是服务正在返回元素列表,我需要在多个嵌套层的每一层中提取第一个元素。
如果列表中的任何为null
,则此代码将为我提供例外。
我知道我可以尝试捕获,但是我有五个要填充的viewmodel元素。我正在尝试寻找此问题的干净解决方案,因为我了解如何以“丑陋的方式”进行操作。
任何指针将不胜感激。
答案 0 :(得分:6)
我建议在?.
(而不是.
)的帮助下进行空传播
tempModel.Value = req.Data
.FirstOrDefault()
?.Readings
?.FirstOrDefault()
?.Extract
?.FirstOrDefault()
?.Values
?.FirstOrDefault()
?.Reading;
每当null
出现时,它将传播到末尾(最终结果将是null
),并且不会引发异常。