c# - Linq XDocument 返回基于 2 个属性值的元素列表

标签 c# xml linq

是否可以返回基于 2 个匹配属性值的元素列表。我尝试了以下但没有成功。

var query = xdoc.Root.Elements("Root")
.Where(x => x.Attribute("Name").Value == "Value1")
.Where(x => x.Attribute("Name").Value == "Value2")
.Select(x => (string)x.Element("ElementName");

这是示例 xml 结构

    <Region Name="Leeds">
        <Group>
            <Data1>Some data 1</Data1>
            <Data2>Some data 2</Data2>
        </Group>
<Group>
            <Data1>Some data 1</Data1>
            <Data2>Some data 2</Data2>
        </Group>

    </Region>
    <Region Name="Armley">
        <Group>
            <Data1>Some data 3</Data1>
            <Data2>Some data 4</Data2>
        </Group>
    </Region>

提前致谢

最佳答案

您可以像@Adil 建议的那样在相同的 Where 子句中使用 ||,或者使用 Contains:

var names = new [] { "Value1", "Value2" };

var query = xdoc.Root.Elements("Root")
                     .Where(x => names.Contains((string)x.Attribute("Name")))
                     .Select(x => (string)x.Element("ElementName");

我还将 XAttribute.Value 更改为 (string)XAttribute 以使其更安全。

关于c# - Linq XDocument 返回基于 2 个属性值的元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129756/

相关文章:

c# - GridView 中的复选框 "Checked"值始终为 false

c# - Scaffold-DbContext SQL View ? ASP 网络核心 3.1

c# - Xml 序列化 - 忽略父节点

c# - 如何在不使用查询语法的情况下在 Entity Framework 中进行左外连接?

c# - 如何正确连接到 Json.NET 的 JObject.ToObject<T>()?

c# - 在没有刷新/提交的情况下强制执行查询

java - 服务内的((按钮) View )不起作用

Javascript XML 解析器不工作

c# - 可为空的对象必须有一个值——为什么?

c# - LINQ Enumerable.All 如果集合为空则始终返回 True