Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610

Linq to XML запросы выбрать неповторяющиеся элементы

03.02.2010, 18:20. Показов 3768. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите составить следующий LINQ запрос к файлу XML, который должен вернуть
все элементы PARAM , но так аттрибут value неповторялся.
Примерное содержание XML файла следующее.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<PARAM_FIELDS>
              <PARAM_FIELD type="Hex" descr="" value="0x01" />
              <PARAM_FIELD type="Hex" descr="" value="0x02" />
              <PARAM_FIELD type="Hex" descr="" value="0x03" />
              <PARAM_FIELD type="Hex" descr="" value="0x04" />
              <PARAM_FIELD type="Hex" descr="" value="0x05" />
              <PARAM_FIELD type="Hex" descr="" value="0x56" />
              <PARAM_FIELD type="Hex" descr="" value="0x45" />
  </PARAM_FIELDS>
//.....
<PARAM_FIELDS>
              <PARAM_FIELD type="Hex" descr="" value="0x11" />
              <PARAM_FIELD type="Hex" descr="" value="0x02" />
              <PARAM_FIELD type="Hex" descr="" value="0x13" />
              <PARAM_FIELD type="Hex" descr="" value="0x04" />
              <PARAM_FIELD type="Hex" descr="" value="0x05" />
              <PARAM_FIELD type="Hex" descr="" value="0x56" />
              <PARAM_FIELD type="Hex" descr="" value="0x45" />
  </PARAM_FIELDS>
Заранее благодарю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2010, 18:20
Ответы с готовыми решениями:

LINQ to XML выбрать все элементы у которых есть определенный аттрибут
Здарвствуйте подскажите как с помошью LINQ to XML выбрать все элементы у которых есть аттрибут с определенным именем. Заранее...

Можно ли с помощью LINQ to XML хранить отдельные элементы в массиве
Можно ли с помощью LINQ to XML хранить отдельные элементы в массиве? (string например)или например в коллекциях? Например можно ли...

LINQ to XML или XPath to XML (выбор одного элемента)
Прошу помощи в LINQ или XPath запросе к XML Вот XML: &lt;manifest...

10
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
03.02.2010, 20:26
C#
1
var values = x.Element("root").Elements("PARAM_FIELDS").Elements("PARAM_FIELD").Attributes("value").Select(n=>n.Value).ToArray();
Добавлено через 1 минуту
получается массив value

если нужны неповторяющиеся добавишь .Distinct()
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
03.02.2010, 20:46  [ТС]
К сожаленью этот запрос не возращает уникальные записи да еще и исключение возникает.
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
03.02.2010, 20:49
Цитата Сообщение от Sergei Посмотреть сообщение
К сожаленью этот запрос не возращает уникальные записи
Цитата Сообщение от HIMen Посмотреть сообщение
если нужны неповторяющиеся добавишь .Distinct()
Цитата Сообщение от Sergei Посмотреть сообщение
исключение возникает.
в корне один элемент?
1
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
03.02.2010, 20:54  [ТС]
вот файл
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<DATA>
<PARAM_FIELDS>
              <PARAM_FIELD type="Hex" descr="" value="0x01" />
              <PARAM_FIELD type="Hex" descr="" value="0x02" />
              <PARAM_FIELD type="Hex" descr="" value="0x03" />
              <PARAM_FIELD type="Hex" descr="" value="0x04" />
              <PARAM_FIELD type="Hex" descr="" value="0x05" />
              <PARAM_FIELD type="Hex" descr="" value="0x56" />
              <PARAM_FIELD type="Hex" descr="" value="0x45" />
  </PARAM_FIELDS>
<PARAM_FIELDS>
              <PARAM_FIELD type="Hex" descr="" value="0x11" />
              <PARAM_FIELD type="Hex" descr="" value="0x02" />
              <PARAM_FIELD type="Hex" descr="" value="0x13" />
              <PARAM_FIELD type="Hex" descr="" value="0x04" />
              <PARAM_FIELD type="Hex" descr="" value="0x05" />
              <PARAM_FIELD type="Hex" descr="" value="0x56" />
              <PARAM_FIELD type="Hex" descr="" value="0x45" />
  </PARAM_FIELDS>
</DATA>
Добавлено через 35 секунд
Надо выбрать уникальные элементы по аттрибуту value
и желательно всем элемент PARAM_FIELD а не только аттрибут
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
03.02.2010, 21:02
элементы PARAM_FIELD?
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
03.02.2010, 21:07  [ТС]
Да
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
03.02.2010, 21:15
C#
1
var values = x.Element("DATA").Elements("PARAM_FIELDS").Elements("PARAM_FIELD").Distinct(new Comparer());
C#
1
2
3
4
5
6
7
8
9
10
11
class Comparer : System.Collections.Generic.IEqualityComparer<XElement>
{
    public bool Equals(XElement x, XElement y)
    {
        return x.Attribute("value").Value == y.Attribute("value").Value;
    }
    public int GetHashCode(XElement obj)
    {
        return obj.Attribute("value").Value.GetHashCode();
    }
}
Добавлено через 1 минуту
out:
Code
1
2
3
4
5
6
7
8
9
<PARAM_FIELD type="Hex" descr="" value="0x01" />
<PARAM_FIELD type="Hex" descr="" value="0x02" />
<PARAM_FIELD type="Hex" descr="" value="0x03" />
<PARAM_FIELD type="Hex" descr="" value="0x04" />
<PARAM_FIELD type="Hex" descr="" value="0x05" />
<PARAM_FIELD type="Hex" descr="" value="0x56" />
<PARAM_FIELD type="Hex" descr="" value="0x45" />
<PARAM_FIELD type="Hex" descr="" value="0x11" />
<PARAM_FIELD type="Hex" descr="" value="0x13" />
1
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
03.02.2010, 21:22  [ТС]
Спасибо отлично работает.Пришлось определять свой Comparer. Как я понял в данном случае без этого не обойтись?
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
03.02.2010, 21:52
Думаю да, надо же как-то ему сказать, по какому параметру Distinct
1
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
03.02.2010, 23:14  [ТС]
Спасибо большое за ответы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2010, 23:14
Помогаю со студенческими работами здесь

Пропарсить и стандартизировать XML, XSL или Linq to XML?
Такой вопрос. необходимо считывать XML-файлы и приводить их к единому стандарту руководствуясь положением элементов в иерархии и...

Составить программу с запросами LINQ. Выбрать любую предметную область и по ней составить запросы
Составить программу с запросами LINQ. Выбрать любую предметную область и по ней составить запросы. типа такой задачи private...

Linq group by: нужны только неповторяющиеся данные о Partners
IQueryable&lt;UserModel&gt; users = from u in dataContext.aspnet_Users join p in dataContext.Partners on u.UserId...

Подсчитать количтво нодов в XML при помощи LINQ to XML
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;Root&gt; &lt;host&gt; 192.168.1.1 &lt;/host&gt; &lt;host&gt; 192.168.1.3 &lt;/host&gt; &lt;/Root&gt; как...

Объединение 2 xml файлов по ключу в 1 xml с использованием linq
День добрый. Я уже отписывался в другой теме с объединением 2 xml, но увы тот метод для меня слишком сложен. Видел на форумах ребята...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru