【问题标题】:.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)

      【讨论】:

      • 谢谢,答案在 C# 中,但仍然反映了正确的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多