匿名类型和空

时间:2014-09-03 21:13:07

标签: c# xml linq anonymous-types

我们公司利用一项服务,通过 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.Valuenull,它会抛出Null Argument Exception

1 个答案:

答案 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();