【问题标题】:How to add input check in a Linq Query to build XML only if input is valid仅当输入有效时,如何在 Linq 查询中添加输入检查以构建 XML
【发布时间】:2011-06-07 00:00:22
【问题描述】:

我有一个需要用来构建 XML 的输入值。只有值存在时,我才需要构建子元素。

例子

string classInput="something";     
XDocument classes = new XDocument(
                     new XElement("Classes",
                                         new XElement("Class",
                                                 new XElement("Name", classInput))
                                                ));

返回我想要的:

<Classes>
  <Class>
    <Name>something</Name>
  </Class>
</Classes>

但是,上面的查询返回:

<Classes>
  <Class>
    <Name></Name>
  </Class>
</Classes>

在 classInput 为 null 或空的情况下,但我希望它仅在 classInput 是非空字符串时才构建子 XML。即在上述情况下,我只想构建:

&lt;Classes /&gt; 如果说 classInput = "";

尝试在查询中添加检查,但随后它会明智地处理字符串 classInput 字符,而不是作为字符串。然后我得到

 <Classes>
      <Class>
        <Name>something</Name>
      </Class>
    </Classes>

我有更多的输入,我必须以相同的方式构建更多的子元素,所以我需要一个可扩展的解决方案。

【问题讨论】:

    标签: c# linq-to-xml


    【解决方案1】:

    使用 conditional operator 检查输入,如果输入为 null 或为空,则返回 null:

    XDocument classes = new XDocument(
                          new XElement("Classes", String.IsNullOrEmpty(classInput) ?
                              null :
                              new XElement("Class",
                                  new XElement("Name", classInput))
                        ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多