我想使用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>
答案 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()));