真的只是快速检查一下。
我有一个 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/