C# 基于属性值LINQ to xml选择节点

C# 基于属性值LINQ to xml选择节点,c#,linq-to-xml,C#,Linq To Xml,我想根据属性选择xml节点。我对LINQtoXML的工作方式非常陌生,无法编写正确的查询。我怎样才能修好它 我的XML <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Enable0" value="true" /> <!-- dumb comment --> <add key="Enable

我想根据属性选择xml节点。我对LINQtoXML的工作方式非常陌生,无法编写正确的查询。我怎样才能修好它

我的XML

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Enable0" value="true" />
    <!-- dumb comment -->
    <add key="Enable1" value="false" />
    <!-- dumb comment1-->
    <add key="Enable2" value="true" />
    <add key="Enable3" value="false" />
    <!-- dumb comment2 -->
    <add key="Enable4" value="true" />
  </appSettings>
  <asdf>
    <a key="b"></a>
    <a key="c"></a>
    <a key="d"></a>
  </asdf>
</configuration>

您还可以使用linq方法的语法来达到相同的结果

string value = defaultElement.Elements("add")
            .FirstOrDefault(n => n.Attribute("key").Value == name)
            .Attribute("value").Value;

您还可以使用linq方法的语法来达到相同的结果

string value = defaultElement.Elements("add")
            .FirstOrDefault(n => n.Attribute("key").Value == name)
            .Attribute("value").Value;

@mjwills我将编辑并添加一些用于测试的示例xml,但是您还需要什么代码?我不确定代码的哪些部分与这个问题相关。您可以执行一个
select.Value
,它将是一个字符串,而不是一个节点/元素。@mjwills然后我可以简单地删除所有代码,只显示那个断开的查询。这是一个好选项吗?不要使用Value:(string)node.Attribute(“key”)和(string)node.Attribute(“Value”)如果对象不存在,您将得到一个错误。@mjwills我将编辑并添加一些用于测试的示例xml,但您还需要什么代码?我不确定代码的哪些部分与这个问题相关。您可以执行一个
select.Value
,它将是一个字符串,而不是一个节点/元素。@mjwills然后我可以简单地删除所有代码,只显示那个断开的查询。这是一个好的选择吗?不要使用Value:(string)node.Attribute(“key”)和(string)node.Attribute(“Value”)如果对象不存在,您将得到一个错误。
string value = defaultElement.Elements("add")
            .FirstOrDefault(n => n.Attribute("key").Value == name)
            .Attribute("value").Value;