Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Linq to xml 
:(
    Опции темы
chip_and_dayl
Дата 24.10.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Всем привет.

есть след. структура xml

Код

<hermesTerminals>
        <sol>2578789</sol>
        <sol>4545545</sol>
  </hermesTerminals>



моя задача найти sol который содержит 4545545

для этого написал 

Код

IEnumerable<XElement> sol =
                    from el in root.Elements(@"hermesTerminals")
                    where ((string)el.Element(@"sol") == serialNumber)
                    select el;


Но в данном случае это запрос вернет запись в том случае, если она будет первой стоять. Как сделать, что сверялись все записи а не по первой?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
chip_and_dayl
Дата 24.10.2012, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Код

IEnumerable<XElement> sol =
                    from el in root.Elements(@"hermesTerminals")
                        where //((string)el.Element(@"sol") == serialNumber)
                            (from add in el.Elements("sol")
                                where
                                    (string)add == serialNumber 
                             select add).Any()

                    select el;



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
lomaster
Дата 24.10.2012, 11:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: 1
Всего: 2



Вы и смотрите только в 1 первом sol, а надо по всем ходить. xpath в условии прикрутите.

Еще проще так
IEnumerable<XElement> sol = root.XPathSelectElements("hermesTerminals[sol='4545545']");
только вы не sol-ы берете, а hermesTerminals.

Это сообщение отредактировал(а) lomaster - 24.10.2012, 12:14
PM   Вверх
Kolovorot
Дата 24.10.2012, 15:15 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: 1
Всего: 3



Цитата(lomaster @ 24.10.2012,  11:41)
Вы и смотрите только в 1 первом sol, а надо по всем ходить. 

Ничего подобного. Запрос возвращает элемент hermesTerminals у которого в перечислении элементов sol, есть элемент sol со значение serialNumber.

Добавлено через 6 минут и 28 секунд
Вам же нужно сделать так, если Вы конечно хотите сделать это именно методами Linq to XML:
Код

XElement sol = root.Elements("sol").FirstOrDefault(e => e.Value == "4545545");

--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
lomaster
Дата 24.10.2012, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: 1
Всего: 2



Цитата

Ничего подобного
 вы про что говорите?
PM   Вверх
Kolovorot
Дата 24.10.2012, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: 1
Всего: 3



 О том что запрос
Код

IEnumerable<XElement> sol =
                    from el in root.Elements(@"hermesTerminals")
                        where //((string)el.Element(@"sol") == serialNumber)
                            (from add in el.Elements("sol")
                                where
                                    (string)add == serialNumber 
                             select add).Any()
                    select el;


смотрит только в первом sol.
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
lomaster
Дата 24.10.2012, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: 1
Всего: 2



Я писал про топик, просто 2 пост пришел раньше. долго я писал. smile

А дописал, когде увидил и его...

Это сообщение отредактировал(а) lomaster - 24.10.2012, 15:47
PM   Вверх
Kolovorot
Дата 24.10.2012, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: 1
Всего: 3



Понятно smile 
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.1157 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.