我有一个LinqToXML表达式,我正在尝试基于相似的属性选择不同的名称。 代码运行良好,我已经放在下面:
var q = xmlDoc.Element("AscentCaptureSetup").Element("FieldTypes")
.Descendants("FieldType")
.Select(c => new { width = c.Attribute("Width").Value,
script = c.Attribute("ScriptName").Value,
sqlType = c.Attribute("SqlType").Value,
enableValues = c.Attribute("EnableValues").Value,
scale = c.Attribute("Scale").Value,
forceMatch = c.Attribute("ForceMatch").Value,
forceMatchCaseSensitive = c.Attribute("ForceMatchCaseSensitive").Value,
sortAlphabetically = c.Attribute("SortAlphabetically").Value,
})
.Distinct();
问题出现在不是所有属性都是必需的,如果其中一个属性被省略了,例如 sortAlphabetically,那么就会出现“对象未引用”的错误。这很有道理,但是否有一种方法可以修改查询,只有在属性实际存在时才分配新值?(从而绕过任何空指针错误)