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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Linq to XML, как использовать where 
:(
    Опции темы
RomaKiev
Дата 30.6.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток.
Пишу на Silverlight.
Есть такой XML-файл:

Код

@"<?xml version=""1.0""?>
            <Voprosi>
                <Tipi>
                <TipVoprosa Imja=""uporadovachivanije"">
                    <Vopros nomer=""1"">
                        Упорядочьте города по численности населения
                        <VariantiOtvetov Tip=""Poradok"" id1=""Нью-Йорк"" id2=""Бостон"" id3=""Москва"" id4=""Мадрид"" id5=""Киев""/>
                    </Vopros>
                    <Vopros nomer=""2"">
                         Упорядочьте события 
                         <VariantiOtvetov Tip=""Poradok""  id1=""Появление радио"" id2=""День взятия Бастилии"" id3=""Рождение А. С. Пушкина"" id4=""Рождение Наполеона"" id5=""Рождение Кенеди""/>
                    </Vopros>
                </TipVoprosa>
                </Tipi>
            </Voprosi>"




C помощью LINQ to XML Необходимо извлечь содержимое элемента <Vopros>, у которого значение 
атрибута nomer равно 2, то есть вопрос "Упорядочьте события". Как написать такой запрос, вернее больше интересует, как использовать спецификацию условия "where" в даном случае? 
PM MAIL   Вверх
MrGOD
Дата 3.7.2011, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

return  from el in XDocument.Load(CONFIGURATION_FILE_NAME).Root.Element("Tipi").Element("TipVoprosa").Elements("Vopros")
    where el.Attribute("nomer").Value == "2"
    select el;


Например как то так.

Это сообщение отредактировал(а) MrGOD - 3.7.2011, 00:04
PM MAIL Skype   Вверх
ДобренькийПапаша
Дата 4.7.2011, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Вот так получше будет:
Код

class Program
    {
        static void Main(string[] args)
        {            
            string xmlDoc = @"
           
                <TipVoprosa Imja='uporadovachivanije'>
                    <Vopros nomer='1'>
                        Упорядочьте города по численности населения
                        <VariantiOtvetov Tip='Poradok' id1='Нью-Йорк' id2='Бостон' id3='Москва' id4='Мадрид' id5='Киев'/>
                    </Vopros>
                    <Vopros nomer='2'>
                         Упорядочьте события 
                         <VariantiOtvetov Tip='Poradok' id1='Появление радио' id2='День взятия Бастилии' id3='Рождение А. С. Пушкина' id4='Рождение Наполеона' id5='Рождение Кенеди'/>
                    </Vopros>
                </TipVoprosa>
           ";

            XDocument document = XDocument.Parse(xmlDoc);            
            string currentName = document.Descendants("Vopros")
                                .Where(e => e.Attribute("nomer").Value == "2")
                                .Select(e => e.Value).First();
            Console.WriteLine(currentName);
           
            Console.ReadLine();
        }
    }



--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
MrGOD
Дата 4.7.2011, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тоже самое только другими словами)
PM MAIL Skype   Вверх
ДобренькийПапаша
Дата 5.7.2011, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Цитата(MrGOD @  4.7.2011,  16:26 Найти цитируемый пост)
Тоже самое только другими словами) 

И работать будет быстрее из-за Descendents() сразу, а не через .Root.Element("Tipi").Element("TipVoprosa").Elements("Vopros")


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


 




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


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

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