我试图防止使用LINQ将XML文件解析为自定义对象时产生NULL值。C#? null合并运算符LINQ
我发现Scott Gu's blog为这个伟大的解决方案,但由于某些原因,它不与我整数的工作。我想我已经使用了相同的语法,但似乎我缺少一些东西。哦,并且由于某种原因,当节点不是空的时候它就起作用。
下面是我的代码的提取物。
List<GrantAgresso> lsResult = (from g in xml.Element("root").Elements("Elementname")
select new GrantAgresso()
{
Year = (int?)g.Element("yearnode") ?? 0,
Subdomain = (string)g.Element("domainnode") ?? ""
}).ToList();
的errormessage的是:
Input string was not in a correct format.
如果任何人有一个线索,我做错了,请帮助:)
编辑:一块XML(可奇怪的名字,但它是没有选择的余地)
<Agresso>
<AgressoQE>
<r3dim_value>2012</r3dim_value>
<r0r0r0dim_value>L5</r0r0r0dim_value>
<r7_x0023_province_x0023_69_x0023_V005>0</r7_x0023_province_x0023_69_x0023_V005>
<r7_x0023_postal_code_x0023_68_x0023_V004 />
<r7_x0023_country_x0023_67_x0023_V003>1004</r7_x0023_country_x0023_67_x0023_V003>
<r7_x0023_communitydistrict_x0023_70_x0023_V006>0</r7_x0023_communitydistrict_x0023_70_x0023_V006>
</AgressoQE>
</Agresso>
我的选择是不正确的XML语法。你能显示xml内容吗? coalesce运算符是对的,如果不是,它不会抛出这个错误(它与字符串无关) –
引发异常的'Year'或'Subdomain'分配是什么?你可以尝试注释其中一行来查看异常是否消失。 – Mizipzor
我已将xml的一个节点添加到我的帖子中。 它是触发异常的空节点(以r7_开头)。我用来检索它的代码与我在一年中使用的代码相同。 – Nielsm