C#:使用linq检查特定属性键值对

时间:2015-10-03 04:11:27

标签: c# linq

我想使用linq检查特定的属性键值对是否存在 我正在使用以下代码进行检查:

bool keyPresent = xDocument.Element("noSqlDb").Element("elements").Elements("key")
                           .Where(el => el.Attribute("id").Equals(key.ToString()))
                           .Any();  

我的XML如下所示:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<noSqlDb>
  <keytype>System.Int32</keytype>
  <payloadtype>a</payloadtype>
  <elements>
    <key id="1">
      <name>element</name>
      <descr>test element</descr>
      <timestamp>2015-10-02T23:54:07.6562371-04:00</timestamp>
      <children>
        <item>1</item>
        <item>2</item>
        <item>3</item>
      </children>
      <payload>
        <item>CSE681</item>
        <item>SMA</item>
        <item>C#.net</item>
      </payload>
    </key>
  </elements>
</noSqlDb>

1 个答案:

答案 0 :(得分:0)

您可以简单地使用Xpath来尝试查找元素。

bool keyPresent = xDocument.XPathSelectElement(String.Format("//key[@id={0}]", key)) != null;

..或使用LINQ

bool keyPresent = xDocument.Descendants()
    .Any(e => e.Name == "key" && e.Attributes()
        .Any(a => a.Name == "id" && a.Value == key.ToString()));