Linq到XML搜索

时间:2012-06-13 11:14:43

标签: c# linq linq-to-xml

真的快速检查一下。

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

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

OR

<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标签是长代码还是短代码,然后获取值或是否有更快,更有效的方法来做这个?

1 个答案:

答案 0 :(得分:1)

如果您不关心订单,您可以查询两者并加入结果,如下所示:

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

修改

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

var results = document.Descendants()
                      .Where(e => e.Name == "ProductIdentifier" || e.Name == "b221");