【问题标题】:.NET lambda XML OrderBy attribute if attribubute exists.NET lambda XML OrderBy 属性(如果属性存在)
【发布时间】:2016-05-17 01:33:15
【问题描述】:
如果属性存在,我正在尝试按顺序对 xml 属性进行排序。
如果不是,我希望它继续正常运行。
目前我有:
Dim children As IEnumerable(Of XmlNode) = dbElements.ChildNodes.Cast(Of XmlNode)().OrderBy(Function(r) r.Attributes("sequence").Value)
如果每个 XmlNode 都具有该属性,这将正常工作。如果不是,我得到一个对象未按预期设置为实例错误。如何修改此表达式以首先检查序列是否存在?
谢谢,
【问题讨论】:
标签:
asp.net
xml
vb.net
lambda
【解决方案1】:
你可以先检查是否Attributes("sequence") IsNot Nothing,如果条件满足则获取属性的Value,否则返回默认值:
Dim children As IEnumerable(Of XmlNode) = _
dbElements.ChildNodes _
.Cast(Of XmlNode)() _
.OrderBy(
Function(x) If(x.Attributes("sequence") IsNot Nothing, x.Attributes("sequence").Value, "")
)
【解决方案2】:
如果属性不存在,不确定你想如何排序,但你可以尝试这样的方法
.OrderBy(r => r.Attributes["sequence"] == null ? "" : r.Attributes["sequence"].Value)