powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не могу понять как составить такой запрос в LINQ to XML
4 сообщений из 4, страница 1 из 1
Не могу понять как составить такой запрос в LINQ to XML
    #38349238
LINQStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Подскажите как составить такой запрос.

Есть элемент XElement. Он Root. У него, соответственно, есть подэлементы.

У каждого подэлемента может быть лишь один атрибут:
1. У элемента может быть атрибут "NotRegular = 10".
2. У элемента может быть атрибут "Regular = ...." под "..." подразумевается число от 1 до 9 (т.е. "Regular=1" или "Regular=2" и т.д.)
3. У элемента может не быть атрибута вообще, и тогда подразумевается, что это "Regular=1".

Вот пример XML

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<Root>
 <SomeElement Regular = 2>
  ...
 </SomeElement>

 <SomeElement Regular = 3>
  ...
 </SomeElement>

 <SomeElement Regular = 3>
  ...
 </SomeElement>

 <SomeElement Regular = 2>
  ...
 </SomeElement>

 <SomeElement>
  ...
 </SomeElement>
 

 <SomeElement NotRegular = 10>
  ...
 </SomeElement>

</Root>




Помогите составить запрос, который будет возвращать список элементов, у которых нет атрибута NotRegular = 10

Вот моя наивная реализация
Код: c#
1.
2.
3.
from e in XML.Elements()
where ! (((string)e.Attribute("NotRegular")) == "10")
select new MyRegularElement() { Value = e.Value, Type = (e.Attribute ("Regular") != null) ? e.Attribute ("Regular").Value : "1" };



Она не сработала.
По идеи, должен вернутся список ВСЕХ элементов, у которых нет атрибута "NotRegular=10"

Помогите пожалуйста с запросом.
...
Рейтинг: 0 / 0
Не могу понять как составить такой запрос в LINQ to XML
    #38349319
LINQStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему пока так

Код: c#
1.
2.
3.
4.
5.
6.
7.
            IEnumerable<XElement> First = XML.Elements();

            IEnumerable<XElement> Second =  from e in XML.Elements()
                                            where (((string)e.Attribute("NotRegular")) == "10")
                                            select e;

            var rrrrr = First.Except(Second).Select (e => e);   // ну тут еще нужно прикрутить создание своего объекта




Главное, что запрос вернул то, что нужно !


Критикуйте ! Может как то получше можно сделать ?
...
Рейтинг: 0 / 0
Не могу понять как составить такой запрос в LINQ to XML
    #38349369
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
XElement doc = XElement.Parse(@"<Root>
 <SomeElement Regular = ""2""/>
 <SomeElement Regular = ""3""/>
 <SomeElement Regular = ""3""/>
 <SomeElement Regular = ""2""/>
 <SomeElement/>
 <SomeElement NotRegular = ""12""/> 
 <SomeElement NotRegular = ""10""/>
</Root>");

IEnumerable<XElement> ls_xpath = doc.XPathSelectElements(".//SomeElement[not(@NotRegular) or @NotRegular!=10]");
ls_xpath.Dump();



^)
...
Рейтинг: 0 / 0
Не могу понять как составить такой запрос в LINQ to XML
    #38349407
LINQStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,

Спасибо !

Я вот смотрю XPathSelectElements какой то навороченный.
Походу нужно срочно его изучать.

А то я думал, изучая Линк буду без проблем составлять самые сложные условия выборок. В общем думал Линк это панацея и заменит все остальное :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не могу понять как составить такой запрос в LINQ to XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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