2

真的只是快速检查。

我有一个 XML 文件,我将使用 Linq to XML 进行搜索。我唯一的问题是,我的用户将提供的 XML 可以使用长代码标签或短代码标签,例如

<FromPerson>Joe Bloggs</FromPerson>- 长代码

或者

<m175>Joe Bloggs</m175>- 短代码

这是我的代码片段,显示我当前如何搜索文档(目前仅使用长代码搜索):

prod.ProductID = product.Elements("ProductIdentifier").First(t => (t.Element("ProductIDType").Value == "45" || t.Element("ProductIDType").Value == "21")).Element("IDValue").Value;

因此,元素“ProductIdentifier”可以是那个,也可以是“b221”。

只是简单地放置一个 IF 语句来评估 XML 标记是长代码还是短代码,然后获取值或者是否有更快、更有效的方法来执行此操作?

4

1 回答 1

1

如果您不关心顺序,您可以查询两者并加入如下结果:

var results = document.Descendants("ProductIdentifier")
                      .Union(document.Descendants("b221"));

编辑

如果您确实关心元素的顺序,可以使用以下查询:

var results = document.Descendants()
                      .Where(e => e.Name == "ProductIdentifier" || e.Name == "b221");
于 2012-06-13T11:19:36.070 回答