正确的方法提取多层嵌套列表中的第一个元素

3

我正在从SOAP服务获取数据,并想知道提取嵌套列表中第一个元素的正确方法。

以下是我遇到问题的示例:

 tempModel.Value = req.Data
   .FirstOrDefault()
   .Readings
   .FirstOrDefault()
   .Extract
   .FirstOrDefault()
   .Values
   .FirstOrDefault()
   .Reading;

事情是服务返回元素列表,我需要提取多个嵌套层中每个的第一个元素。
如果任何一个列表是null,以下代码将给我异常。
我知道我可以尝试捕获异常,但我想要填充viewmodel的这五个元素。我正在尝试寻找解决此问题的简洁方法,因为我了解如何用"丑陋的方式"做到这一点。
非常感谢您的任何指针。

1
为什么不使用 ?. 传播 null 呢? tempModel.Value = req.Data.FirstOrDefault()?.Readings?.FirstOrDefault()?.Extract?.FirstOrDefault()?.Values?.FirstOrDefault()?.Reading; - Dmitry Bychenko
1个回答

6
我建议使用 ?.(而不是.)来进行 null传播
       tempModel.Value = req.Data
          .FirstOrDefault()
         ?.Readings
         ?.FirstOrDefault()
         ?.Extract
         ?.FirstOrDefault()
         ?.Values
         ?.FirstOrDefault()
         ?.Reading;

每当出现null时,它将被传播到最后(并且您将获得null作为最终结果),而不会抛出任何异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接