c# - Linq to XML 搜索

标签 c# linq linq-to-xml

真的只是快速检查一下。

我有一个 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 标记是长代码还是短代码,然后获取值或者是否有更快、更有效的方法来执行此操作?

最佳答案

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

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

编辑

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

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

关于c# - Linq to XML 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013685/

相关文章:

具有 where 条件的 C# LINQ GroupBy

c# - 将一个表达式“注入(inject)”另一个表达式

c# - 使 Entity Framework (使用 Linq 查询)使用自定义字段的别名而不是重做子查询

c# - 使用 C# Windows 窗体应用程序在 datagridview 中拖放

c# - 我的游戏在线高分

c# - 反序列化json数据c#

c# - 使用非默认构造函数会破坏 Json.net 中的反序列化顺序

c# - 在此处获取 XElement 的行号

c# - 如何将 XElement 转换为 XComment (C#)

c# - 手动迭代选择的 XML 元素(C#、XDocument)