我尝试将xml Feed转换为linq,但在检索该元素的数据之前,我无法检查元素是否为null。我确信我的以下代码是正确的,但是xml的一行中缺少元素" ElementOne"它的孩子"元素",所以它在执行时抛出整个脚本。
此代码段不完整,但这是导致整个脚本出错的部分,是否有人能够发现为什么会出错?
from c in s.Element("ElementOne").Elements("ElementTwo")
where s.Element("ElementOne") != null &&
s.Element("ElementOne").Elements("ElementTwo") != null
select new{
Id = (c.Attribute("Id") == null) ? 0 : (int)c.Attribute("Id")
}
答案 0 :(得分:1)
我只想将其更改为:
var query = s.Elements("ElementOne").Elements("ElementTwo")
.Select(c => (int?) c.Attribute("Id") ?? 0);
(除非你真的需要匿名类型,为什么还要烦恼呢?)
如果没有ElementOne
个元素,这只会给你一个空的结果。
如果您只想使用第一个ElementOne
元素,即使有多个元素,您也可以使用:
var query = s.Elements("ElementOne").Take(1).Elements("ElementTwo")
.Select(c => (int?) c.Attribute("Id") ?? 0);