我们公司利用一项服务,通过 Rest Api 为开发人员提供访问其应用程序的权限。因此,基于此应用程序生成的内容,我构建了一个数据模型来表示可扩展标记语言(XML),以便于修改。
然而,API为数据生成两个独立的区域:
var responses = submission.Sections.SelectMany(obj =>
obj.Screens.Screen.Responses.Response.Select(response =>
new { response.Label, response.Value, response.Type })).ToList();
var responses = submission.Sections.SelectMany(obj =>
obj.Screens.Screen.Responses.Responses.Response.Select(response =>
new { response.Label, response.Value, response.Type })).ToList();
正如您在构建内容时所看到的那样Responses.Response
是大量数据的位置,但有时会使用Responses.Responses.Response
。有没有办法对数据进行初步预测?这样我就可以测试null
偶尔会抛出的Responses.Response
?
这样我就能沿着这些方向做点什么:
if(obj != null)
{
// Responses.Response
}
else
{
//Responses.Responses.Response
}
Linq甚至可以做到这一点吗?问题是因为在某些情况下response.Value
为null
,它会抛出Null Argument Exception
。
答案 0 :(得分:5)
您可以使用null-coalescing运算符:
var responses = submission.Sections.SelectMany(obj =>
(obj.Screens.Screen.Responses.Response ?? obj.Screen.Responses.Responses.Response).Select(response =>
new { response.Label, response.Value, response.Type })).ToList();