powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проверить наличие дочернего элемента
4 сообщений из 4, страница 1 из 1
Проверить наличие дочернего элемента
    #38947320
Тройка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добырый день. Есть XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 <?xml version="1.0" encoding="utf-16"?>
<content Version="80903">
  <call commcount="3" taskcount="0">
    <property_simple key="callresult" value="busy" />
    <activity>
      <commutation index="0">
        <property_simple key="idconnection" value="1fc1410d-47f9-43b0-a685-af8334a068b8" />
        <property_simple key="totalsec" value="1" />
        <property_simple key="ivrscriptname" value="name2" />
      </commutation>
      <commutation index="1">
        <property_simple key="idconnection" value="1fc1410d-47f9-43b0-a685-af8334a068b8" />
        <property_simple key="totalsec" value="2" />
        <property_simple key="ivrscriptname" value="name1" />
      </commutation>
      <commutation index="2">
        <property_simple key="idconnection" value="adbb49de-bdab-4fc4-86dd-cdeec65b4d56" />
        <property_simple key="totalsec" value="3" />
      </commutation>
    </activity>
  </call>
</content>


Мне нужно посчитать сумму value для property_simple key="totalsec" для тех commutation, у которых есть <property_simple key="ivrscriptname". В данном примере это 0 и 1. Сумму всех я могу посчитать так:
Код: c#
1.
var res = docXml.Descendants().Elements("commutation").Elements("property_simple").Where(c => c.Attribute("key").Value == "totalsec").Sum(c1 => Convert.ToInt32(c1.Attribute("value").Value));


Но не могу понять как мне отфильтровать те commutation, у которых нет элемента <property_simple key="ivrscriptname"
...
Рейтинг: 0 / 0
Проверить наличие дочернего элемента
    #38947542
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
var xy = doc.XPathSelectElements("//commutation[ (count(./property_simple[@key='ivrscriptname'])) = 0]/property_simple[@key='totalsec']");
var res = xy.Select(a => Int32.Parse(a.Attribute("value").Value)).Sum();
...
Рейтинг: 0 / 0
Проверить наличие дочернего элемента
    #38947551
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой...

Код: c#
1.
var xy = doc.XPathSelectElements("//commutation[ (count(./property_simple[@key='ivrscriptname'])) > 0]/property_simple[@key='totalsec']");
...
Рейтинг: 0 / 0
Проверить наличие дочернего элемента
    #38947795
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тройка,

Код: c#
1.
2.
3.
4.
5.
6.
7.
var res = docXml.Descendants()
    .Elements("commutation")
    .Where(c => c.Elements("property_simple").Attributes("key").Any(attr => attr.Value == "ivrscriptname"))
    .Elements("property_simple")
    .Where(c => c.Attribute("key").Value == "totalsec")
    .Sum(c1 => Convert.ToInt32(c1.Attribute("value").Value))
    ;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проверить наличие дочернего элемента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]