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

时间:2018-08-13 08:45:25

标签: c#

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

我遇到的问题的示例

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

问题是服务正在返回元素列表,我需要在多个嵌套层的每一层中提取第一个元素。

如果列表中的任何null,则此代码将为我提供例外

我知道我可以尝试捕获,但是我有五个要填充的viewmodel元素。我正在尝试寻找此问题的干净解决方案,因为我了解如何以“丑陋的方式”进行操作。

任何指针将不胜感激。

1 个答案:

答案 0 :(得分:6)

我建议在?.(而不是.)的帮助下进行空传播

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

每当null出现时,它将传播到末尾(最终结果将是null),并且不会引发异常。