2015-10-03 3 views
0

Я хочу проверить, присутствует ли конкретная пара ключей ключа-ключа, используя linq.
Я использую следующий код для проверки:C#: Проверить определенную пару ключа-значения атрибута, используя 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

так, что это проблема? – harishr

+0

Он возвращает false для всех случаев – ojas

ответ

0

Вы могли бы просто использовать Xpath, чтобы попытаться найти элемент.

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

..or с помощью LINQ

bool keyPresent = xDocument.Descendants() 
    .Any(e => e.Name == "key" && e.Attributes() 
     .Any(a => a.Name == "id" && a.Value == key.ToString())); 
Смежные вопросы